Python 多執行緒程式設計 一

2021-08-01 05:49:36 字數 3721 閱讀 1264

userrequestthread:負責讀取客戶端輸入,該輸入可能來自 i/o 通道,程式將建立多個執行緒,每個客戶端乙個,客戶端的請求將會被放入佇列中

requestprocessor:該執行緒負責從佇列中獲取請求並進行處理,為第3個執行緒提供輸出

replythread:負責向使用者輸出,將結果傳回給使用者,或者把資料寫到本地檔案系統或資料庫中

pyhton 提供了多個模組來支援多執行緒程式設計,包括 thread 、threading 和 queue 模組

程式可以使用 thread 和 threading 模組來建立和管理執行緒,而threading 模組提供了更高階、功能更全面的執行緒管理。推薦使用 therading模組

不使用 thread 模組的原因:

1、thread 擁有的同步原語很少,

2、對程序何時退出沒有控制

3、不支援守護執行緒

thread 類

4、使用 thread 類

有以下三種方法建立執行緒:

1、建立 thread 的例項,傳給它乙個函式

2、建立 therad 的例項,傳給它乙個可呼叫的類例項

3、派生 thread 的字類, 並建立字類的例項

1、建立 thread 的例項,傳給它乙個函式

#coding = utf-8

'''多執行緒

'''import threading

from time import ctime, sleep

loop_para = [4, 2]

defloop

(i, sleep_second):

print('loop start execute ' + str(i) + ctime())

sleep(sleep_second)

print('loop end execute ' + str(i) + ctime())

defmain

(): print('start loop', ctime())

loops =

length = range(len(loop_para))

for i in range(len(loop_para)):

t = threading.thread( target = loop, args = (i, loop_para[i]))

for i in range(len(loop_para)):

loops[i].start()

for i in range(len(loop_para)):

loops[i].join()

print('all done ', ctime())

if __name__ == '__main__':

main()

2、建立 therad 的例項,傳給它乙個可呼叫的類例項

#coding = utf-8

'''多執行緒

'''import threading

from time import ctime, sleep

loop_para = [4, 2]

class

loop_class

():''''''

def__init__

(self, func, args, name = ''):

self.name = name

self.func = func

self.args = args

def__call__

(self):

self.func(*self.args)

defloop

(i, sleep_second):

print('loop start execute ' + str(i) + ctime())

sleep(sleep_second)

print('loop end execute ' + str(i) + ctime())

defmain

(): print('start loop', ctime())

loops =

length = range(len(loop_para))

for i in length:

t = threading.thread( target = loop_class(loop, (i, loop_para[i]), loop.__name__) )

for i in length:

loops[i].start()

for i in length:

loops[i].join()

print('all done ', ctime())

if __name__ == '__main__':

main()

3、派生 thread 的字類, 並建立字類的例項

#coding = utf-8

'''多執行緒

'''import threading

from time import ctime, sleep

loop_para = [4, 2]

class

loop_class

(threading.thread):

''''''

def__init__

(self, func, args, name = ''):

threading.thread.__init__(self)

self.name = name

self.func = func

self.args = args

defrun(self):

self.func(*self.args)

defloop

(i, sleep_second):

print('loop start execute ' + str(i) + ctime())

sleep(sleep_second)

print('loop end execute ' + str(i) + ctime())

defmain

(): print('start loop', ctime())

loops =

length = range(len(loop_para))

for i in length:

t = loop_class(loop, (i, loop_para[i]), loop.__name__)

for i in length:

loops[i].start()

for i in length:

loops[i].join()

print('all done ', ctime())

if __name__ == '__main__':

main()

python 多執行緒程式設計(一)

傳統的python單執行緒程式 created on 2012 3 9 author administrator usr bin env python from time import sleep,ctime def loop0 print start loop0 at ctime sleep 4 ...

python多執行緒程式設計(一)

python提供兩個模組支援多執行緒程式設計 thread和threading。thread模組函式 函式描述 start new thread function,args,kwargs none 產生乙個新執行緒,在新執行緒中用指定引數和可選的kwargs呼叫function函式 allocate...

python 多執行緒程式設計

一 執行緒基礎 1 建立執行緒 thread模組提供了start new thread函式,用以建立執行緒。start new thread函式成功建立後還可以對其進行操作。其函式原型 start new thread function,atgs kwargs 其引數含義如下 args 元組形式的引...