當前位置:
首頁 > 最新 > 鄔小編講多線程

鄔小編講多線程

昨天,我在學習python的時候看到了這樣一段代碼:

t=threading.Thread(target=tcplink,args=(sock,addr))

我不知道什麼意思,於是去問爸爸,爸爸告訴我:「這是python創建線程的語句。」並讓我自己查詢一些有關進程和線程的資料並且給我講解了一下。今天我就和大家分享一下我對進程和線程的理解。

線程和進程

查完資料我自己畫的圖:

這是爸爸給我講解線程和進程時的圖:

我的理解:

一個操作系統由好多個進程組成,每一個進程都會分配一定的資源。每個進程都有許多線程,線程是沒有資源的,它只和其它線程共享進程的資源,而進程本身運行的的程序也是一個進程。線程之間可以互相連接、調用和結束。

進程優先順序

如圖:Idle就是CPU閑置時間運行級。

我的理解:

每一個線程都在內存里排著隊等待CPU去運行,CPU就給每一個線程一個運行時間,一個線程一個線程的運行,由於CPU算的很快,我們人感覺不到他在挨個運行,所以就像在同時運行了。而CPU給的運行時間,就是根據這個線程的父進程的優先順序給的。每個進程都有相應的優先順序,優先順序決定它何時運行和接收多少 CPU 時間。

Python實例

理解了這些知識以後,我寫了一段運用了多線程的Python代碼,它可以用多線程列印多個1~9。

代碼:

import threading,time

class MyThread(threading.Thread):

def __init__(self,threadname):

threading.Thread.__init__(self,name=threadname)

def run(self):

for i in range(10):

print(self.getName(),":",i)

time.sleep(1)

mya = MyThread("test1")

mya.start()

myb= MyThread("test2")

myb.start()

myc= MyThread("test3")

myc.start()

運行結果(因為優先順序一樣,他們的CPU時間都不多,是一句一句執行的,所以它不是連接的非常好):

Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)] on win32

Type "copyright", "credits" or "license()" for more information.

==================== RESTART: D:/python學習/thread——test.py ====================

>>> test1test2test3 ::: 000

test1test2test3 ::: 111

test1test2test3 ::: 222

test1test2test3 ::: 333

test1test2test3 ::: 444

test1test2test3 ::: 555

test1test2test3 ::: 666

test1test2test3 ::: 777

test1test2test3 ::: 888

test1test2test3 ::: 999


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 2406工作室 的精彩文章:

TAG:2406工作室 |