我一直有一些麻煩與Python的多處理模塊。我需要測試具有不同參數的函數,並且該函數執行大量計算,所以使用所有內核是最合適的。我最終使用了pool.map(),它適合我的需要。問題是,有時我的函數永遠不會結束,所以pool.map會永遠阻止永遠期待返回的值。我不知道爲什麼會發生這種情況。我在不使用多處理的情況下做了很多測試,只是在for循環中傳遞一個接一個的結論,並且總是結束。處理與Python多處理
不管怎樣,我想現在要做的是爲每個工人/執行功能的超時,但我需要在函數中的變量,以在達到超時的情況下返回。這就像超時發生之前函數的狀態。我的代碼是太大了,它張貼在這裏,但這裏有一個簡單的,下面這個例子:
def func(x):
secsPassed = 0
for _ in xrange(x):
time.sleep(1)
secsPassed +=1
return secsPassed
pool = Pool(4)
results = pool.map(func, [3, 10, 50, 20, 300])
所以我想,每個執行需要在最長30秒,我也想知道的價值secs在func被取消之前被刪除。我正在使用Python 2.7,並且可以對func進行更改,或者在必要時使用Pool.map以外的其他工具。
在此先感謝。
也許改變芹菜?它允許超時,並容易重試。此外,如果您在服務器上安裝RabbitMQ,則可以通過部署連接到相同RabbitMQ的代碼來使用多臺服務器或PC。 – user1157751
我會檢查出來,但我寧願避免使用第三方庫爲這個項目。 – Larvasapiens