Python错误检查错误?

时间:2014-04-29 23:53:45

标签: python compiler-errors pool

我有以下脚本:

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没有报告任何异常。这是一个错误吗?

1 个答案:

答案 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对象,它更像是返回值的承诺,而不是返回值本身。