考虑文件sample.py
包含以下代码:
from multiprocessing import Pool
def sample_worker(x):
print "sample_worker processes item", x
return x
def get_sample_sequence():
for i in xrange(2,30):
if i % 10 == 0:
raise Exception('That sequence is corrupted!')
yield i
if __name__ == "__main__":
pool = Pool(24)
try:
for x in pool.imap_unordered(sample_worker, get_sample_sequence()):
print "sample_worker returned value", x
except:
print "Outer exception caught!"
pool.close()
pool.join()
print "done"
当我执行它时,我得到以下输出:
^{pr2}$之后,应用程序挂断。我怎样才能不挂断电话呢?在
正如塞普蒂提到的,你的压痕(仍然)是错误的。缩进yield语句,使i在其范围内。我不完全确定代码中实际发生了什么,但生成超出范围的变量似乎不是一个好主意:
要处理生成器中的异常,可以使用如下包装:
^{pr2}$相关问题 更多 >
编程相关推荐