python多執行緒程式設計

2022-09-12 02:27:11 字數 2835 閱讀 4077

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程式:

import

threading

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...