python 中的Array,Value及内存共享

官网文档的例子

 1 from multiprocessing import Process, Value, Array
 2 
 3 def f(n, a):
 4     n.value = 3.1415927
 5     for i in range(len(a)):
 6         a[i] = -a[i]
 7 
 8 if __name__ == '__main__':
 9     num = Value('d', 0.0)
10     arr = Array('i', range(10))
11 
12     p = Process(target=f, args=(num, arr))
13     p.start()
14     p.join()
15 
16     print num.value
17     print arr[:]

结果:

 1 3.1415927

2 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] 

分析:模式Array,Value达到内存共享的目标

如果是自建一个对象并绑定一项value属性,及另一个list.再调用子函数。在子函数中改动对象的value及另一个list.是没有作用的。

在C++中可以通过引用,在子函数中一样可以改动

 官档中有如下:

A manager returned by Manager() will support types list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event, Queue, Value and Array. For example,

原文地址:https://www.cnblogs.com/liunnis/p/4612491.html