2013-08-19 171 views
1

在一个wx GUI中,我需要调用一个将运行一段时间的方法,并且在我的研究中,我隐约可以理解的唯一一点代码是一个多处理示例here.我试着去适应这个码到我的需要,这里是我的代码的相关章节:python多处理不处理任务

  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代码,也没有给我的错误。

回答

0

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

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

注意逗号images后,这使得(images,)的元组。

虽然不是直接回答你的问题,但你也可以在how to deal with Long Running Tasks找到这个页面有用。

+0

我试过了,仍然没有做任何事情。我也尝试给参数发电机,而不是列表,但我得到了酸洗错误。这个网站只是让我感到满意,因为我认为可能mp会比线程更好。 – chris