【问题标题】:python multiprocessing not processing taskpython多处理不处理任务
【发布时间】:2013-08-19 03:22:02
【问题描述】:

在 wx GUI 中,我需要调用一个可以运行一段时间的方法,而在我的研究中,我隐约理解的唯一一点代码是一个多处理示例 here. 我试图将此代码改编为我的需要,这里是我代码的相关部分:

            def OnStart(self, event):
                images = self.getImageList()
                jobs = mp.cpu_count() * 2
                for job in range(jobs):
                    mp.Process(target = myWorker, args = (images)).start()

    (external to tv class, displayImage is a @staticmethod)        
    def myWorker(images):
        print "yo"
        for image in images:
            tv.displayImage(image)

我的问题是永远不会执行 myWorker 中的代码,也不会给我错误。

【问题讨论】:

    标签: python


    【解决方案1】:

    发送到args 参数的参数应该是一个序列。它应该具有与myWorker 期望的参数数量相同的长度。因为myWorker 需要一个参数,所以args 应该是一个长度为1 的序列。所以试试:

    mp.Process(target = myWorker, args = (images,)).start()
    

    注意images 后面的逗号,它使(images,) 成为一个元组。

    虽然不是直接回答您的问题,但您也可以在how to deal with Long Running Tasks 上发现此页面很有用。

    【讨论】:

    • 我试过了,还是什么都没做。我也尝试给 args 一个生成器而不是一个列表,但是我得到了一个酸洗错误。那个网站让我很困惑,这是我认为 mp 可能比线程更好的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    相关资源
    最近更新 更多