python多執行緒非同步執行,並獲取每個執行緒的結果

2022-04-08 16:54:13 字數 1815 閱讀 7702

需求:多工非同步執行,每個任務返回不一樣的結果,等到所有任務結束,獲取到每個任務的結果之後,主程式再結束。

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,現在看看多執行緒...