看到这行代码但找不到文档
self.conn.setblocking(0)
问题是,如何在不阻塞的情况下轮询管道池? 有一个父进程需要与一些不稳定的子进程通信,并希望定期轮询和检查他们是否有话要说。如果他们在有新话要说之前决定他们需要更多时间,不要阻止。这会神奇地做到这一点吗?
答案 0 :(得分:2)
这很可能是您所看到的:https://docs.python.org/2/library/socket.html#socket.socket.setblocking
您没有提供太多详细信息,因此我不确定您要执行的操作,但通常当您有多个要轮询的套接字时,您将使用{{3} (参见PyMOTW的这些select)。
答案 1 :(得分:2)
创建管道将返回两个连接对象。连接对象提供轮询功能,您可以在其中检查是否有任何要读取的内容。轮询功能允许您指定等待的超时。
如果您有一组正在等待的连接对象,则可以使用multiprocessing.connection.wait()或其非多处理版本。
有关详细信息,请参阅 https://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.Connection 这将显示连接对象的详细信息。查看民意调查功能
答案 2 :(得分:0)
您可以检查 p.poll(0) 如果结果为 True 则管道不为空,您可以在不阻塞的情况下接收数据。