Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
进程间使用管道的python非阻塞recv?_Python_Multiprocessing_Inter Process Communicat - Fatal编程技术网

进程间使用管道的python非阻塞recv?

进程间使用管道的python非阻塞recv?,python,multiprocessing,inter-process-communicat,Python,Multiprocessing,Inter Process Communicat,查看了这行代码,但找不到文档 self.conn.setblocking(0) 问题是,如何在不阻塞的情况下轮询管道池? 有一个父进程需要与一些不稳定的子进程通信,并希望定期轮询和检查它们是否有话要说。如果他们决定需要更多的时间才能有新的话要说,不要阻止。这会神奇地实现吗?这很可能就是您看到的: 您没有给出太多的细节,所以我不确定您想做什么,但通常当您有许多要轮询的套接字时,您将使用(请参见PyMOTW中的这些套接字)。创建管道将返回两个连接对象。连接对象提供轮询功能,您可以在其中检查是否有任

查看了这行代码,但找不到文档

self.conn.setblocking(0)
问题是,如何在不阻塞的情况下轮询管道池?
有一个父进程需要与一些不稳定的子进程通信,并希望定期轮询和检查它们是否有话要说。如果他们决定需要更多的时间才能有新的话要说,不要阻止。这会神奇地实现吗?

这很可能就是您看到的:


您没有给出太多的细节,所以我不确定您想做什么,但通常当您有许多要轮询的套接字时,您将使用(请参见PyMOTW中的这些套接字)。

创建管道将返回两个连接对象。连接对象提供轮询功能,您可以在其中检查是否有任何内容可读取。轮询功能允许您指定要等待的超时

如果有一组正在等待的连接对象,则可以使用multiprocessing.connection.wait()或其非多处理版本

有关详细信息,请参阅
这将向您显示连接对象的详细信息。查看poll函数

您可以检查p.poll(0),然后如果结果为真,则管道不是空的,您可以无阻塞地接收数据。

进程之间的管道也是套接字吗?不确定您正在谈论的管道是套接字函数,因此self.conn几乎肯定是套接字。大多数“管道”也将通过某种套接字在下面实现。最后使用select,它可以完美地与管道配合使用,以满足我们的需要。如果有人能够提供一些最低限度的示例代码,我将对此进行投票。在windows上获取错误与文档存在冲突(有些地方说select在win上有效,但poll不起作用,有些地方说unix仅适用于所有人)。如果我们有一些已知的工作代码,我可以检查它是否是平台问题,或者我缺少什么:)