【问题标题】:Using multprocessing.Pipe for blocking until event occurs (with timeout)使用 multprocessing.Pipe 进行阻塞,直到事件发生(超时)
【发布时间】:2013-11-16 19:01:41
【问题描述】:

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

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

【问题讨论】:

    标签: python multiprocessing ipc


    【解决方案1】:

    您可以使用Connectionpoll method;它有一个超时参数:

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

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多