2016-08-05 80 views
0

即約multiprocessing.Queue.get官方文檔蟒蛇multiprocessing.Queue.put /得到的塊參數

GET([塊[,超時])

取出並返回從項目隊列。如果 可選的args塊爲True(默認值)並且超時時間爲無( 默認值),則在必要時阻止,直到項目爲available。如果超時 是一個正數,則會在至多超時秒數內阻止,並在該時間內沒有可用項目時引發隊列空例外 。 否則(塊爲False),返回一個項目,如果其中一個是immediately available,否則引發Queue.Empty異常(在這種情況下超時被忽略 )。

的問題是,什麼是提前availableimmediately available

感謝之間的差異。

回答

1

塊,如果有必要,直到產品可用

這只是意味着Queue是空的時,你的請求,直到你添加項目到Queue,除非你傳遞參數將被阻止block = False或設置一些Timeout

立即

這意味着,對Queue一些項目時,你的請求,它會立即返回。

+0

我可以得到你的想法,但上面的答案更清楚,所以我給他正確的標籤。 –

1

在設置block=True的第一種情況下,"available"表示物品出現在隊列中並準備通過Queue.get()刪除。重點是線程/進程將阻止,直到有一個項目準備從隊列中刪除。

在第二種情況下,block=False所以調用線程將塊如果在隊列中(沒有產品"immediately available"隊列上)沒有項目。相反,Queue.get()將提高Queue.Empty以表示隊列上沒有任何內容可供閱讀。您的應用程序需要處理該異常,可能是通過執行其他任務,然後再重試。

+0

明白了,非常感謝 –