鄔小編講多線程
昨天,我在學習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


TAG:2406工作室 |