在线程内生成进程会引发ZMQError:系统调用中断

时间:2018-10-03 14:33:24

标签: python multithreading zeromq pyzmq

我有一个多线程,多进程的代码。该操作在每5秒调用一个循环的线程(反应器LoopingCall)内发生。 main动作函数会产生一个multiprocessing.Process,它与zeromq库没有交互。以某种方式产生该过程会导致

  

ZMQError:系统调用中断

multiprocessing.Process更改为threading.Thread可解决此问题。我已经看到其他人在线程/进程之间共享上下文时遇到问题,但是我不知道为什么会有这个问题。下面是显示问题的简单伪代码。

class Worker:
    def action(self):        
        # do stuff
        stuff = request_stuff_from_zmq_replier()
        p = Process(target=something_totaly_zmq_free, arg= (stuff, ))
        p.start()
        # do other stuff
        p.join()
        # finish the action

def main():
    w = Worker()
    ctrl_loop = LoopingCall(self.w.action)
    ctrl_loop.start(5).addErrback(end_gracefully)

操作系统:(泊坞窗)Ubuntu 16.04,Python 2.7

0 个答案:

没有答案