首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多种类型进程的多进程进程队列

多种类型进程的多进程进程队列
EN

Stack Overflow用户
提问于 2014-05-20 08:19:07
回答 1查看 556关注 0票数 0

我对Python比较陌生,我正在尝试创建一个包含许多不同进程的队列。总共有3个进程,分别称为Process1、Process2和Process3。当Process1完成执行时,我希望将一个新的进程Process2添加到队列中。当Process2完成执行时,我希望将一个新的进程Process3添加到队列中。

我希望使用队列的原因是,如果Process2失败,我希望将此任务移到队列的后面,以便稍后可以执行。

下面是我目前的实现:

代码语言:javascript
复制
from multiprocessing import Process, Queue
import time

class Process1(Process):
    def __init__(self, queue):
            super(Process1, self).__init__()
            self.queue = queue

    def run(self):
            print 'I am Process 1'
            time.sleep(1)
            print 'Done process 1'
            p2 = Process2(self.queue)
            self.queue.put(p2)
            p2.start()
            p2.join()

class Process2(Process):
    def __init__(self, queue):
            super(Process2, self).__init__()
            self.queue = queue

    def run(self):
            print 'I am Process 2'
            time.sleep(2)
            print 'Done process 2'
            p3 = Process3(self.queue)
            self.queue.put(p3)
            p3.start()
            p3.join()

class Process3(Process):
    def __init__(self, queue):
            super(Process3, self).__init__()
            self.queue = queue

    def run(self):
            print 'I am Process 3'
            time.sleep(3)
            print 'Done process 3'


if __name__ == '__main__':
    queue = Queue()

    p1 = Process1(queue)
    p1.start()
    p1.join()

当执行这段代码时,我得到了这个错误:

代码语言:javascript
复制
RuntimeError: Queue objects should only be shared between processes through inheritance.

我真的很难理解Python进程和队列。我试着阅读了Python的文档,但我很难找到我想要做的事情的解决方案。如果有人能为我提供背景读物,那就太棒了。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-05-20 09:02:25

多进程队列仅供进程的直接子进程使用。通过让Process1创建Process2和Process2创建Process3,您正在尝试将队列传递给进程孙子进程和曾孙进程。您需要让顶级流程(main中的代码)决定何时需要创建子进程,并且它还应该包含处理失败的子进程和重新排队的规则。通常,当流程工作完成时,顶级流程将根据结果对象做出决策。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23749135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档