需求:多工非同步執行,每個任務返回不一樣的結果,等到所有任務結束,獲取到每個任務的結果之後,主程式再結束。
1#-*- coding: utf-8 -*-
2import
threading
3import
time
4import
traceback56
7class
mythread(threading.thread):
8"""
9某個類沒有我要的方法,那麼可以重寫這個類,新增我需要的方法
10"""
11def
__init__(self, target=none, args=()):
12 super(mythread, self).__init__
()13 self.func =target
14 self.args =args
15 self.result =none
1617
defrun(self):
18try
:19 self.result = self.func(*self.args)
20except
exception:
21print
(traceback.print_exc())
2223
defget_result(self):
24return
self.result
2526
27def
tstart(arg, name):
28for i in range(1,arg):
29print(name + '
sleep
' + str(i) + '
second\n')
30time.sleep(i)
31return
"%s running end
" %name
3233
34if
__name__ == '
__main__':
35 task_list =
36 t1 = mythread(tstart, args=(5, '
thread 1'))
3738
t1.start()
3940 t2 = mythread(tstart, args=(6, '
thread 2'))
4142
t2.start()
4344
for t in
task_list:
45t.join()
4647
while len(task_list) !=0:
48for t in
task_list:
49if
nott.isalive():
50 result =t.get_result()
51if
result:
52print
(t.get_result())
53else:54
print('
create server error')
55task_list.remove(t)
5657
print("
main func end
")
其中mythread中的get_result方法是threading.thread中沒有的,是單獨新增的。
python 多執行緒偽 多執行緒筆記 偽非同步IO
bio的時候,乙個客戶端對應伺服器的一條執行緒,比較耗執行緒資源.在此基礎上,對起執行緒進行優化,建立乙個執行緒池,對執行緒進行管理,可以設定乙個最大執行緒數 maxthreadcount.這樣,達到執行緒可控的目的.即使外面有遠大於執行緒數的連線過來,也不至於讓伺服器撐爆.多出的客戶端,就進入執行...
多執行緒 執行緒同步 非同步
同步和非同步 同步和非同步通常用來形容一次方法的呼叫。同步方法呼叫一旦開始,呼叫者必須完成所有的操作一直到方法呼叫結束,其他呼叫者才能繼續後續的行為,非同步方法呼叫類似乙個訊息傳遞,一旦開始,方法呼叫就會立即返回,其他呼叫者則可以無需等待,可以立即繼續後續的操作。非同步 不過,如果 我們 趕時髦,就...
非同步多執行緒 3 多執行緒安全
多執行緒去訪問同乙個集合,一般沒問題,執行緒安全問題一般是出在同時修改乙個物件的時候。執行緒安全問題 一段 單執行緒執行和多執行緒執行,結果不一致。例如這個方法,很簡單,迴圈開啟task往乙個list裡add,等3秒鐘執行完後列印出來list的長度,如果是單執行緒,肯定是10000,現在看看多執行緒...