我在一个相当简单的脚本中使用multprocessing.Pipe
,该脚本有2个进程,其中 A 从外部源(连接在串行端口上的Arduino)读取数据发送和事件到 B 。这样我就可以阻止 B 阻止,直到它从 A 收到一个特定事件,但是外部来源是有时甚至不能非常可靠地检测到它(它可靠性为75%)。所以我想围绕这个事件实现暂停,但是我想放弃一个错误的,即使已经超时,但没有什么能阻止它发生
我是否可以将更好的抽象用于此目的?我希望能做的一件事是b.recv(timeout=N)
,由于某种原因,multiprocess.Pipe
目前无法实现这一目标。
答案 0 :(得分:2)
您可以使用Connection
的{{3}};它有一个超时参数:
receiver, sender = mp.Pipe()
...
if receiver.poll(timeout):
data = receiver.recv()