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 元組形式的引...