为什么不使用这个代码?我试着用while1循环中的多重处理来创建一个进程。我希望这些进程与我的主进程有一些共享的内存来进行通信。这是我测试管理器的演示代码:
import multiprocessing
import time
def f(ls,lso, ):
print "input ls:"
print ls
print "input lso:"
print lso
ls[0] += 1
ls[1][0] += 1
ls_2 = ls[2]
print ls_2
ls_2[0] += 1
print ls_2
ls[2] = ls_2
print "output ls:"
print ls
tmp = []
tmp.append([1, 2, 3])
tmp.append([5, 6, 7])
lso = tmp
print "output lso:"
print lso
if __name__ == '__main__':
manager = multiprocessing.Manager()
#ls = manager.list([1, [1], [1]])
ls = manager.list()
lso = manager.list()
lso = [[0, 0, 0], [0, 0, 0]]
tmp = []
tmp.append(1)
tmp.append([1])
tmp.append([1])
ls = tmp
print 'before', ls, lso
p = multiprocessing.Process(target=f, args=(ls, lso, ))
p.start()
p.join()
print 'after', ls, lso
输出为:
before [1, [1], [1]] [[0, 0, 0], [0, 0, 0]]
after [1, [1], [1]] [[0, 0, 0], [0, 0, 0]]
创建
Manager.list
对象后,必须设置对象内的数据,而不是重写它。如果你在print type(lso)
行之前和之后撒上lso=(value)
,你就会明白我的意思在下面的代码中,一个Manager.list对象在创建时被赋予一个值:ie:
myvar = list([1,2,3])
。创建第二个,然后将数据复制到其中:myvar = list(); myvar[:] = [2,3,4]
玩得开心
来源
输出
相关问题 更多 >
编程相关推荐