concurrent.futures
Posted wangcheng9418
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了concurrent.futures相关的知识,希望对你有一定的参考价值。
import os
import sys
import time
from threading import Thread
from multiprocessing import Process
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
# t = ThreadPoolExecutor(os.cpu_count())
# p = ProcessPoolExecutor(os.cpu_count())
executor = ProcessPoolExecutor(max_workers=os.cpu_count())
def foo(a, b):
time.sleep(1)
print(f"foo end: {a}{b}...")
return a, b
def boo(obj):
res = obj.result()
print(f"boo.. {res}")
if __name__ == ‘__main__‘:
start_time = time.time()
for i in range(3):
res = executor.submit(foo, "Elton", i)
print(res.done()) # 是否执行完成
res.add_done_callback(boo) # 添加回调函数
print("主进程")
end_time = time.time()
print(f"Time consuming {end_time - start_time}")
"""
False
False
False
主进程
Time consuming 0.013116836547851562
foo end: Elton1...
foo end: Elton0...
boo.. (‘Elton‘, 0)
foo end: Elton2...
boo.. (‘Elton‘, 1)
boo.. (‘Elton‘, 2)
"""
以上是关于concurrent.futures的主要内容,如果未能解决你的问题,请参考以下文章
无法将动态类与 concurrent.futures.ProcessPoolExecutor 一起使用
使用concurrent.futures模块并发,实现进程池线程池
在 python 的 concurrent.futures 中查找 BrokenProcessPool 的原因
Python concurrent.futures.ProcessPoolExecutor:用于大量任务的大量 RAM
来自 concurrent.futures 的 ProcessPoolExecutor 比 multiprocessing.Pool 慢