多处理是否创建了类的副本?

时间:2013-12-28 20:52:31

标签: python object multiprocessing

我在Python中使用多处理来运行许多任务。

我这样做:

    tasks = multiprocessing.JoinableQueue()
    results = multiprocessing.Queue()      

    # Start consumers

    num_consumers = multiprocessing.cpu_count() * 2
    consumers = [ Consumer(tasks, results) for _ in range(num_consumers) ]  

    for w in consumers:
        w.start()

然后我有一个属性“Colony”,它有一个蚂蚁列表,全部在__init__中初始化

        for ant in self.colony.ants:
            tasks.put(ant)
            num_tasks += 1

当我运行所有任务(即方法__call__)时,每个蚂蚁都会调用它。 我返回self,当我比较时:

        # We wait now for all the ants to finish 
        tasks.join() 
        results_list = list()

        for _ in range(num_tasks):
            results_list.append(results.get())

        print (id(results_list[0]),results_list[0].id)
        print(id(self.colony.ants[0]),self.colony.ants[0].id)

我得到了

(33524112, 0)
(33005072, 0)

所以它是同一只蚂蚁,但是在被消费者调用之后它会创建一个自己的副本?或者我错过了什么。 蚂蚁没有在其他任何地方实例化。

提前致谢

0 个答案:

没有答案