python 非阻塞 recv 与进程之间的管道?
python non blocking recv with pipe between processes?
看到这行代码但找不到文档
self.conn.setblocking(0)
问题是,如何在不阻塞的情况下轮询管道池?
有一个父进程需要与一些不稳定的子进程通信,并希望定期轮询和检查他们是否有话要说。如果他们决定需要更多时间才能说出新内容,请不要阻止。这会神奇地做到这一点吗?
这很可能是您正在查看的内容:https://docs.python.org/2/library/socket.html#socket.socket.setblocking
您没有提供太多细节,所以我不确定您要做什么,但通常当您有许多要轮询的套接字时,您将使用 select (see these examples 来自PyMOTW).
创建管道将return 两个连接对象。连接对象提供轮询功能,您可以在其中检查是否有任何内容要读取。轮询功能允许您指定要等待的超时时间。
如果您有一组正在等待的连接对象,那么您可以使用 multiprocessing.connection.wait() 或其非多处理版本。
详情请见
https://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.Connection
这将向您显示连接对象的详细信息。查看poll函数
您可以检查 p.poll(0) 然后如果结果为真则管道不为空并且您可以无阻塞地接收数据。
看到这行代码但找不到文档
self.conn.setblocking(0)
问题是,如何在不阻塞的情况下轮询管道池? 有一个父进程需要与一些不稳定的子进程通信,并希望定期轮询和检查他们是否有话要说。如果他们决定需要更多时间才能说出新内容,请不要阻止。这会神奇地做到这一点吗?
这很可能是您正在查看的内容:https://docs.python.org/2/library/socket.html#socket.socket.setblocking
您没有提供太多细节,所以我不确定您要做什么,但通常当您有许多要轮询的套接字时,您将使用 select (see these examples 来自PyMOTW).
创建管道将return 两个连接对象。连接对象提供轮询功能,您可以在其中检查是否有任何内容要读取。轮询功能允许您指定要等待的超时时间。
如果您有一组正在等待的连接对象,那么您可以使用 multiprocessing.connection.wait() 或其非多处理版本。
详情请见 https://docs.python.org/3/library/multiprocessing.html#multiprocessing.connection.Connection 这将向您显示连接对象的详细信息。查看poll函数
您可以检查 p.poll(0) 然后如果结果为真则管道不为空并且您可以无阻塞地接收数据。