python管理员管理列表

时间:2012-09-25 13:57:21

标签: python-3.x python-multithreading

我在我的一些代码中使用pythons多处理模块。我有一个控制器类来控制一个类并执行一些操作。

import multiprocessing
from multiprocessing import Queue, Process, Manager

class dosomething(multiprocessing.Process):
        def __init__(self,managerList):
                self.mlist = managerList
                print self.mlist

        def run(self):
                self.mlist.append((4,5,6))

class doController:
        def __init__(self):
                mgr = Manager()
                self.mlist = mgr.list()
                self.mlist.append((1,2,3,4))
                t = dosomething(self.mlist)
                #t.daemon = True
                #t.start()

        def printer(self):
                return self.mlist


gd = doController()
print gd.printer()

在dosomething的init部分中的Pring mlist按预期打印[(1,2,3,4)],但是dosomething部分中的列表不起作用,给出IOError 11.任何人都可以提供帮助,如果它是对还是错? / p>

1 个答案:

答案 0 :(得分:0)

缺少对Process.__init__的调用。

您无需创建可以使用函数的Process子类:

from multiprocessing import Process, Manager

def dosomething(mlist):
    mlist.append((4,5,6))

def main():
    manager = Manager()
    L = manager.list((1,2,3,4))

    p = Process(target=dosomething, args=(L,))
    p.start()
    p.join()

    print L

if __name__ == '__main__':
    main()