Python多过程使用管道进行非阻滞互通



是否有可能以非阻滞方式使用管道接收过程间交流?

考虑以下代码:

from multiprocessing import Process, Pipe
import time
def f(conn):
    time.sleep(3)
    conn.send('Done')
    conn.close()
if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    while True:
       print('Test')
       msg = parent_conn.recv()
       if msg == 'Done':
          break
    print('The End')
    p.join()

parent_conn.recv()将阻止while-loop,直到收到消息为止。有没有办法以非阻滞方式收听消息?

使用轮询功能。这样更改您的时循环:

 while True:
       print('Test')
       if parent_conn.poll():
           msg = parent_conn.recv()
           if msg == 'Done':
              break
       else:
           do_something_else()

根据 multiprocessing.Pipe()multiprocessing.Connection文档, Connection具有poll()方法。

相关内容

  • 没有找到相关文章

最新更新