Python程式中的執行緒操作-concurrent模組
阿新 • • 發佈:2020-12-26
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.2Outputs) 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())# 拿不到值會阻塞在這裡。
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 %