2014-04-29 153 views
0

我有以下腳本: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沒有報告任何異常。這是一個錯誤?

+0

您的代碼片段在第9行中包含空集內的逗號錯誤:result = pool.apply_sync(worker,(,)) –

+0

異步調用可能會抑制異常的輸出。爲了測試這個,你可以寫一個引發異常的函數,看看會發生什麼。另一種可能是在python調用的名稱空間內已經有一些類。 – aplassard

回答

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 

你命名什麼resultmultiprocessing.pool.ApplyResult對象,它更像是一個返回值的承諾,不是一個返回值本身。