我有以下脚本:
from multiprocessing import Lock, Pool
def worker():
r = other.work()
return r
def main():
pool = Pool(4)
result = pool.apply_sync(worker,())
result.wait()
在 worker()中,我从另一个模块“其他”调用函数 work(),但是,我忘了导入模块'的其他'。但是当我运行这个python脚本时,python没有报告任何异常。这是一个错误吗?
答案 0 :(得分:2)
在您实际检索结果之前,生成的进程中引发的任何错误都将保持静默。
from multiprocessing import Lock, Pool
def worker():
r = other.work()
return r
def main():
pool = Pool(4)
# note: this is apply_async, not apply_sync
result = pool.apply_async(worker,())
result.wait()
# See here
actual_result = result.get()
这将提出:
NameError: global name 'other' is not defined
你所命名的result
是一个multiprocessing.pool.ApplyResult
对象,它更像是返回值的承诺,而不是返回值本身。