マルチプロセッシング ライブラリとのプロセス通信にパイプを使用すると、ポーリング関数の奇妙な動作に気付きました。パイプのもう一方の端を閉じると、poll() は true を返しますが、これは奇妙なことです。python docs は、実際に何を期待するかを伝えていません。それでも、パイプに間違いなく何もなく、もう一方の端が閉じている場合、poll() は少なくとも false を返すと考えていました。私はpython3.3.2を使用していますが、python 2.7.5でも同じようです。これは意図されたものですか、それともバグですか? バグでない場合、何の役に立つのでしょうか?
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()