'''玩遊戲'''
for i in range(3):
print('玩遊戲 .....')
time.sleep(.5)
def network():
'''上網'''
for i in range(3):
print('上網.....')
time.sleep(.5)
#呼叫#單任務的表現:當25行**,play函式呼叫沒有執行完畢之前。26行不會被執行,也就是會阻塞。。
play()
network()
答案是肯定的,可以使用多執行緒來解決這個問題!也可以通過任務管理器檢視各個程序中的執行緒:單擊所在的菜單行|右鍵|選擇列|選擇執行緒
import time
#匯入執行緒
import threading
def play():
'''玩遊戲'''
for i in range(3):
print('玩遊戲 .....')
time.sleep(.5)
def network():
'''上網'''
for i in range(3):
print('上網.....')
time.sleep(.5)
#通過方法呼叫
def run():
#這個執行,是單任務
# play()
# network()
#下面執行的,是多工
t1=threading.thread(target=play) #建立執行緒物件,指定目標
t2=threading.thread(target=network)#建立執行緒物件,指定目標
t1.start() #即可啟動任務, 任務內容為建立物件時執行的部分(函式)
t2.start()
if __name__=='__main__':
run()
效果:
利用了threading模組thread類去建立物件,這個稱之為多執行緒
並行: 真的多工
併發: 假的多工
cpu: 執行電腦上的程式
程式 程式 程式
任務 任務 任務
好像看上去,這三個程式是同時在執行的。
具體說明:
電腦:單核cpu,只有乙個cpu,只有它在做事。
總之:python中利用threading多執行緒,完成多工,是併發,並且是假的多工。
cpython直譯器 > gil 全域性直譯器鎖 > 限制了python的多執行緒完成並行.
Python 多執行緒 1
import thread import time 為執行緒定義乙個函式 defprint time threadname,delay count 0while count 3 time.sleep delay count 1print threadname,time.ctime 建立兩個執行緒 t...
Python多執行緒(1)新增執行緒
基本指令 新增執行緒 import threading defthread job print this is an added thread,number is s n threading.current thread defmain added threading threading.threa...
python多執行緒 python多執行緒
通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...