2
使用管道進行與多處理庫的進程通信我注意到poll函數的一些奇怪行爲。如果我關閉管道的另一端poll()返回true,這有點奇怪。 python文檔並不真正告訴你期望什麼。我仍然認爲poll()至少會返回false,如果管道中沒有任何內容,並且另一端甚至關閉。我使用python3.3.2,但它似乎是相同的python 2.7.5。這是打算或一個錯誤,如果它不是一個錯誤什麼是好的?python多處理管道poll問題
import multiprocessing
if __name__ == '__main__':
con = multiprocessing.Pipe(True)
con1, con2 = con
print(str(con1.poll())) #prints False
con2.close()
con1.close()
con = multiprocessing.Pipe(True)
con1, con2 = con
con2.close()
print(str(con1.poll())) #prints True
con1.close()
我想你是對的。如果poll()在連接丟失時返回false,則永遠不會檢測到連接丟失。 –
這是完全錯誤的。在關閉的管道上調用poll()會引發異常,或者如果從另一端關閉會產生錯誤。這是表達它的唯一干淨方式。 – Overdrivr
舊的,但在'recv'後面讀取[EOFError](https://docs.python.org/3.4/library/exceptions.html#EOFError)異常。 – user430051