似乎我無法在使用從pprocess調用的函數時修改Python中的全局變量。這是我的例子:Python:如何使用pprocess修改函數中的全局變量
import pprocess
import time
numbers=[0,0,0,0,0,0,0,0,0,0]
# find system time and store in global variable
def find_time(index):
global numbers
x=time.time()
print "Setting element %s of numbers to %f" % (index, x)
numbers[index]=x
return x
# parallel execution of the function
results=pprocess.pmap(find_time, [0,1,2,3,4,5,6,7,8,9], limit=6)
for y in results:
print '%f' % y
# this list is unchanged
print numbers
# serial execution of the function
for x in [0,1,2,3,4,5,6,7,8,9]:
find_time(x)
# now it seems to work
print numbers
「數字」只是零的名單,併爲示範的緣故,我正在嘗試設置每個列表元素,以當前系統時間。當使用pprocess調用時,這不起作用,但是當我使用簡單的for循環來調用函數時,全局變量會發生變化。
我花了一些時間閱讀全局變量,真心希望這不是一個微不足道的問題。有人可以向我解釋發生了什麼事嗎?
非常感謝,
恩諾
另請注意,這裏不需要'global'關鍵字。即使您沒有將其定義爲全局對象,Python也會高興地改變全局對象。如果你通過賦值改變對象的變量引用,你只需要'global'。 – mgilson