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