Я пробовал следующее:
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 был передан по значению, поскольку он не изменялся. Итак, существует ли правило, что оно действительно передается по значению при передаче другому процессу? Спасибо.