【发布时间】:2011-07-29 18:47:57
【问题描述】:
我的这段代码看起来像这样:
glbl_array = # a 3 Gb array
def my_func( args, def_param = glbl_array):
#do stuff on args and def_param
if __name__ == '__main__':
pool = Pool(processes=4)
pool.map(my_func, range(1000))
有没有办法确保(或鼓励)不同的进程不会获得 glbl_array 的副本而是共享它。如果无法停止复制,我将使用 memmapped 数组,但我的访问模式不是很规律,所以我希望 memmapped 数组更慢。以上似乎是首先要尝试的。这是在 Linux 上。我只是想从 Stackoverflow 获得一些建议,不想惹恼系统管理员。如果第二个参数是真正的不可变对象,如glbl_array.tostring(),您认为会有帮助吗?
【问题讨论】:
-
我以为不同的进程不能共享内存变量
-
@Andrey:那你今天学到了一些东西:)
标签: python numpy multiprocessing