我在我的一些代码中使用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>
答案 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()