[英]Python multiprocess non-blocking intercommunication using Pipes
是否可以使用非阻塞方式使用管道來接收過程互通?
考慮以下代碼:
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循環,直到收到消息為止。 有沒有一種以非阻塞方式偵聽消息的方法?
使用輪詢功能。 像這樣更改while循環:
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()
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.