2015-12-29 11 views
0

我測試一些代碼,使用超時與ProcessQueue多處理函數調用。 Queue.get()方法採用可選的超時參數。我寫了下面的測試,以確認它在被調用進程比調用get時分配的時間長時拋出超時錯誤,但它不會拋出錯誤。有人可以告訴我我沒有正確測試get超時嗎?我在Windows 7與python 2Python的多重搞定不超時

import time 
from multiprocessing import Process, Queue 


def f(q, t): 
    time.sleep(t) 
    q.put(0) 

if __name__ == '__main__': 
    q = Queue() 
    p = Process(target=f, args=(q, 15,)) 
    p.start() 
    x = q.get(1) 
    print "received ", x 
+0

Queue.get的第一個參數是是否阻塞。第二個參數是等待的時間長度(以秒爲單位)。 – yarduddles

回答

1

documentationQueue.get接收2個參數:blocktimeout,以該順序。你應該這樣稱呼它

q.get(timeout=1) 
+0

謝謝!我錯誤地查看了multiprocessing.pool.AsyncResult的get方法的文檔...感謝您的幫助。 –