1. 程式人生 > 實用技巧 >Python程式中的執行緒操作-concurrent模組

Python程式中的執行緒操作-concurrent模組

code
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
from threading import currentThread
from multiprocessing import current_process
import time,os
 
def task(i):
    print(f'{currentThread().name} 在執行 任務{i}')
    print(f'{current_process().name} 在執行 任務{i}')
    time.sleep(0.2
) return i**2 if __name__ == '__main__': pool = ProcessPoolExecutor(4) fu_list = [] for i in range(10): future = pool.submit(task,i) print(future.result()) # 拿不到值會阻塞在這裡。 fu_list.append(future) pool.shutdown(wait=True) # 等待池內所有任務執行完畢 print("*"*20)
for i in fu_list: print(i.result())# 拿不到值會阻塞在這裡。
Outputs
macname@MacdeMacBook-Pro py % python3 cccccc.py
MainThread 在執行 任務0
ForkProcess-1 在執行 任務0
0
MainThread 在執行 任務1
ForkProcess-2 在執行 任務1
1
MainThread 在執行 任務2
ForkProcess-3 在執行 任務2
4
MainThread 在執行 任務3
ForkProcess-4 在執行 任務3
9
MainThread 在執行 任務4
ForkProcess
-1 在執行 任務4 16 MainThread 在執行 任務5 ForkProcess-2 在執行 任務5 25 MainThread 在執行 任務6 ForkProcess-3 在執行 任務6 36 MainThread 在執行 任務7 ForkProcess-4 在執行 任務7 49 MainThread 在執行 任務8 ForkProcess-1 在執行 任務8 64 MainThread 在執行 任務9 ForkProcess-2 在執行 任務9 81 ******************** 0 1 4 9 16 25 36 49 64 81 macname@MacdeMacBook-Pro py %