0

我在我的一些代码中使用了 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。如果它是对的或错的,有人可以帮忙吗?

4

1 回答 1

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()
于 2012-09-25T16:31:49.430 回答