【发布时间】:2015-03-08 05:40:22
【问题描述】:
我一直在尝试以下方法:
from multiprocessing import Pool
def f(some_list):
some_list.append(4)
print 'Child process: new list = ' + str(some_list)
return True
if __name__ == '__main__':
my_list = [1, 2, 3]
pool = Pool(processes=4)
result = pool.apply_async(f, [my_list])
result.get()
print 'Parent process: new list = ' + str(my_list)
我得到的是:
Child process: new list = [1, 2, 3, 4]
Parent process: new list = [1, 2, 3]
因此,这意味着 my_list 是按值传递的,因为它没有发生变异。 那么,传递给另一个进程的时候,是不是真的是按值传递的规则呢? 谢谢。
【问题讨论】:
标签: python threadpool pass-by-reference pass-by-value python-multiprocessing