python中能夠用於操作多執行緒的模組分別有:queue、_thread、threading,python中建議使用threading模組來進行多執行緒操作。
使用thread模組來進行多執行緒執行:
import_thread
from time import
sleep, ctime
loops = [4, 2,5]
defloop(nloop, nsec, lock):
print('
start loop
', nloop, '
at:'
, ctime())
sleep(nsec)
print('
loop
', nloop, '
done at:
', ctime())
lock.release()
defmain():
print('
starting threads...')
locks =
nloops =list(range(len(loops)))
for i in
nloops:
lock = _thread.allocate_lock() #
分配鎖 lock.acquire() #
把鎖鎖上
新增到鎖列表
for i in
nloops:
_thread.start_new_thread(loop,
(i, loops[i], locks[i]))
for i in
nloops:
while
locks[i].locked(): #迴圈檢測,直到所有的子執行緒都執行完畢,主線程才會釋放
sleep(0.2)
print("
waiting...")
pass
print('
all done at:
', ctime())
if__name__ == '
__main__':
main()
使用threading進行多執行緒執行python程式:
importthreading
from time import
sleep, ctime
loops = [4, 2]
class
threadfunc(object):
def__init__(self, func, args, name=''
): self.name =name
self.func =func
self.args =args
def__call__
(self):
self.func(*self.args)
defloop(nloop, nsec):
print('
start loop
', nloop, '
at:'
, ctime())
sleep(nsec)
print('
loop
', nloop, '
done at:
', ctime())
defmain():
print('
starting at:
', ctime())
threads =
nloops =list(range(len(loops)))
for i in nloops: #
create all threads
t =threading.thread(
target=threadfunc(loop, (i, loops[i]),
loop.
__name__)) #
loop.__name__返回函式的名稱
for i in nloops: #
start all threads
threads[i].start()
for i in nloops: #
wait for completion
threads[i].join()
print('
all done at:
', ctime())
if__name__ == '
__main__':
main()
threading 模組支援守護執行緒,其工作方式是:守護執行緒一般是乙個等待客戶端請求服務的伺服器。如果沒有客戶端請求,守護執行緒就是空閒的。如果把乙個執行緒設定為守護執行緒,就表示這個執行緒是不重要的,程序退出時不需要等待這個執行緒執行完成。如同在第 2 章中看到的那樣,伺服器執行緒遠行在乙個無限迴圈裡,並且在正常情況下不會退出。如果主線程準備退出時,不需要等待某些子執行緒完成,就可以為這些子執行緒設定守護執行緒標記。該標記值為真時,表示該執行緒是不重要的,或者說該執行緒只是用來等待客戶端請求而不做任何其他事情。
要將乙個執行緒設定為守護執行緒,需要在啟動執行緒之前執行如下賦值語句:
thread.daemon = true
(呼叫
thread.setdaemon(true)
的舊方法已經棄用了)。同樣,要檢查執行緒的守護狀態,也只需要檢查這個值即可(對比過去呼叫
thread.isdaemon()
的方法)。乙個新的子執行緒會繼承父執行緒的守護標記。整個
python
程式(可以解讀為:主線程)將在所有非守護執行緒退出之後才退出,換句話說,就是沒有剩下存活的非守護執行緒時。
python 多執行緒程式設計
一 執行緒基礎 1 建立執行緒 thread模組提供了start new thread函式,用以建立執行緒。start new thread函式成功建立後還可以對其進行操作。其函式原型 start new thread function,atgs kwargs 其引數含義如下 args 元組形式的引...
python 多執行緒程式設計
一 執行緒基礎 1 建立執行緒 thread模組提供了start new thread函式,用以建立執行緒。start new thread函式成功建立後還能夠對其進行操作。其函式原型 start new thread function,atgs kwargs 其引數含義例如以下 args 元組形式...
Python多執行緒程式設計
import threading import time deffunc name time.sleep 3 print 子執行緒 s 啟動 threading.current thread name print hello name print 子執行緒 s 結束 threading.curren...