使用multprocessing.Pipe进行阻塞,直到发生事件(超时)

时间:2013-11-16 19:01:42

标签: python multiprocessing ipc

我在一个相当简单的脚本中使用multprocessing.Pipe,该脚本有2个进程,其中 A 从外部源(连接在串行端口上的Arduino)读取数据发送和事件到 B 。这样我就可以阻止 B 阻止,直到它从 A 收到一个特定事件,但是外部来源是有时甚至不能非常可靠地检测到它(它可靠性为75%)。所以我想围绕这个事件实现暂停,但是我想放弃一个错误的,即使已经超时,但没有什么能阻止它发生

我是否可以将更好的抽象用于此目的?我希望能做的一件事是b.recv(timeout=N),由于某种原因,multiprocess.Pipe目前无法实现这一目标。

1 个答案:

答案 0 :(得分:2)

您可以使用Connection的{​​{3}};它有一个超时参数:

receiver, sender = mp.Pipe()
...
if receiver.poll(timeout):
    data = receiver.recv()