【发布时间】:2016-07-15 01:27:19
【问题描述】:
我正在尝试理解 Python 中的 multiprocessing 超时。
import multiprocessing
import time
import random
def do_something(i):
x = random.randint(1, 3)
time.sleep(x)
return (i, x)
pool = multiprocessing.Pool(processes=4)
results = pool.imap_unordered(do_something, range(50))
while True:
try:
result = results.next(timeout=1)
print result
except StopIteration:
break
except multiprocessing.TimeoutError:
print "Timeout"
问题:
1) 如何为每个任务设置超时时间,以便知道哪些输入导致超时?在上面的示例中,即使任务超时,似乎也会打印结果,所以我不知道哪个任务很慢。
2) 为什么不是所有睡眠时间超过 1 秒的任务都超时?尽管大约 2/3 的随机 x 大于 1,但我只得到了少数超时。
【问题讨论】:
标签: python python-2.7 multiprocessing