Python多进程队列get()块



我写了一个微小的代理实用程序(TCP端口范围),现在试图对其进行测试。所以我的测试:

def test_forwarding(self):
    route = self.config.routes[0]
    q = multiprocessing.JoinableQueue()
    proc_listen = multiprocessing.Process(
        target=lambda q: q.put(str(
            subprocess.Popen(["nc", "-l", str(route.sink[1])], stdout=subprocess.PIPE, shell=False).communicate()[0])),
        args=(q,))
    proc_listen.start()
    proc_write = multiprocessing.Process(
        target=lambda: subprocess.Popen("nc %s %s < ~/Workshop/port-forwarder/tests/test_data.txt" % route.source,
                                        stdout=subprocess.PIPE, shell=True))
    proc_write.start()
    proc_write.join(3)
    proc_write.terminate()
    proc_listen.join(3)
    proc_listen.terminate()
    q.join()
    self.assertEqual(open("test_data.txt", 'r').readline(), q.get())

,但测试卡在get()呼叫上。完全搞砸了,尝试了所有诸如加入/终止之类的东西。任何帮助将不胜感激。

这是带有资源的GitHub回购:在此处输入链接描述

如果您被get阻止,则可以

  1. 使用get_nowait()

  2. 或使用空()检查侧面是否有一些元素。如果不是空的,请跳过

相关内容

  • 没有找到相关文章

最新更新