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++中可以通过引用,在子函数中一样可以改动

时间: 2024-10-06 15:20:48

python 中的Array,Value及内存共享的相关文章

python中的函数对象的内存地址是多少

今天和同学讨论一个问题,发现了函数的内存地址和我想象的不一样. 我以为同一个函数,假如给的参数不一样,那么这两个函数的id就不一样. 然后经过实验,发现python为了便于管理函数,所有的函数都放在同一片内存空间里面. func函数是我定义的一个函数,从结果可以看到func函数和print函数的内存地址是一样的. 这应该是python底层定义的,为了便于管理Python的各种函数和自己项目中定义的函数,可以想到,也许其他的地方也是这个管理机制呢. 原文地址:https://www.cnblogs

python中的list和array的不同之处 2

版权声明:本文为博主非原创文章,未经博主允许可以转载. Python中的list和array的不同之处 python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同.在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu. numpy中封装的array有很强大的功能,里面存放的都是相同的数据类型 [py

python中的list和array的不同之处

原文地址:  http://blog.csdn.net/liyaohhh/article/details/51055147#reply python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同.在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu. numpy中封装的array有很强大的功能,里面

Python中的内存管理机制

Python是如何进行内存管理的 python引用了一个内存池(memory pool)机制,即pymalloc机制,用于管理对小块内存的申请和释放 1.介绍 python和其他高级语言一样,会进行自动的内存管理.它使用引用计数机制检测为对象分配的内存是否可以被释放.然后,在Python中内存永远不会返还给操作系统,Python会持有这些内存并在需要时重新使用它们.在很多场景下,这个特性可以减少内存申请和释放所带来的性能损耗:但对于需要长时间运行的Python进程来讲,Python将会占用大量的

python中的list和array的不同之处 及转换

python中的list和array的不同之处list是列表,可以通过索引查找数值,但是不能对整个列表进行数值运算 In [96]: b=[1,2] In [97]: b[1]Out[97]: 2In [98]: type(b)Out[98]: listIn [99]: b+bOut[99]: [1, 2, 1, 2]array是数组,也可以通过索引值查找数据,但是能对整个数组进行数值运算In [100]: a=np.array([1,2In [101]: a[1]Out[101]: 2In [

python中的内存机制

首先要明白对象和引用的概念 (例子:a=1, a为引用,1为对象,对象1的引用计数器为1,b=1此时内存中只有一个对象1,a,b都为引用,对象的引用计数器此时为2,因为有两个引用) a=1,b=1 id(a)=id(b) #短的字符串,数字python在内存中是一个对象 a=[],b=[] id(a)!=id(b) #字典,数组这样的对象在内存中python会new两个不同的对象 a="new a string" b="new a string" #长的字符串pyt

python中对象初始化放在内存中什么位置

截屏自<Python源码剖析>正文第一页. 也即: 当在其他class中使用 时,node是在堆中的.相当于在C中调用malloc. 不仅仅是对于像Node这样的class 的对象是存在于堆中的,在Python中就连int类型的数值同样是存在在堆中的.因为在Python中就连基本数据类型同样是对象. 让我们思考下Node中的value和self.value这两个变量: 为什么在Node中其他的方法能够调用self.value而不能够调用value? 以前我使用C/C++的思维方法来理解这个问题

Python中的赋值、深拷贝与浅拷贝(内存地址)

1.python中的可变对象与不可变对象 (1) 可变对象:dict,list def dict_test(): a = {} b = a print(id(a)) # 140367329543360 a['a'] = 'hhhh' print('id a:' + str(id(a))) # id a:140367329543360 print('a:' + str(a)) # a:{'a': 'hhhh'} print('id b:' + str(id(b))) # id b:14036732

Python 中变量与内存的关系

老手都是从新手一路过来的,提起Python中难以理解的概念,可能很多人对于Python变量赋值的机制有些疑惑,不过对于习惯于求根究底的程序员,只有深入理解了某个事物本质,掌握了它的客观规律,才能得心应手.运用自如,进阶更高层次来看待这个事物,此刻“庖丁解牛”这个成语能够贴切表达这个意思,你看见的是整头的牛,而我看见的是牛的内部肌理筋骨,就是这个状态!!! 那么为什么Python变量赋值的机制难以理解呢? 我想可能是我们的思维被C语言变量赋值的机制所固化了.在C语言中变量所分配到的地址是内存空间中