Python错误检查错误?
问题描述:
我有以下脚本:Python错误检查错误?
from multiprocessing import Lock, Pool
def worker():
r = other.work()
return r
def main():
pool = Pool(4)
result = pool.apply_sync(worker,())
result.wait()
在工人(),我从另一个调用模块 '等' 功能工作(),但是,我忘了导入模块“其他'。但是当我运行这个python脚本时,python没有报告任何异常。这是一个错误?
答
在生成的进程中引发的任何错误将保持沉默,直到您实际检索结果为止。
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
对象,它更像是一个返回值的承诺,不是一个返回值本身。
您的代码片段在第9行中包含空集内的逗号错误:result = pool.apply_sync(worker,(,)) –
异步调用可能会抑制异常的输出。为了测试这个,你可以写一个引发异常的函数,看看会发生什么。另一种可能是在python调用的名称空间内已经有一些类。 – aplassard