运行此代码时
def f(t):
time.sleep(t)
return t
with ThreadPoolExecutor(max_workers=300) as pool:
res = list(pool.map(f, [2, 10], timeout=1))
它确实扔了一个TimeoutError
,但仅在10秒后(time.sleep
s的最大值)。如果期望TimeoutError
在1秒后发生(超时持续时间)。
我怎样才能解决这个问题?
这似乎做了这个工作
from multiprocessing.dummy import Pool
with Pool(300) as pool:
map_res = pool.map_async(f, [2, 10])
res = map_res.get(timeout=1)
import time
from concurrent.futures import ThreadPoolExecutor
def f(t):
time.sleep(t)
return t
pool = ThreadPoolExecutor(max_workers=300)
res = list(pool.map(f, [2, 10], timeout=1))
它工作,但说实话,我不知道为什么使用上下文管理器它不起作用