更新:抱歉,我錯了我的問題。它是由於我試圖使這個函數平行並且有多個過程改變同一個字典。我如何設計我的功能,以便它可以這樣做?如果我必須發送詞典(在這種情況下),那麼它會自我覆蓋,不能跨越所有核心。我很高興重新設計這個功能,但不知道我該怎麼做,仍然將它傳播到多個內核上。如何從函數內引用外部變量?
爲了簡化,我基本上有類似如下:
list = [1,2,3,10]
dictionary = {}
for x in list:
for xx in range(100):
for xxx in range(100):
dictionary[x]=xx*xxx
這個工作,但是當我換for循環的功能,我得到: NameError:全局名稱「字典」沒有定義
def test(x):
for xx in range(100):
for xxx in range(100):
dictionary[x]=xx*xxx
我知道這事做與命名空間,但我不想送變量函數在這種情況下,因爲我認爲它會覆蓋變量字典。如何在函數中引用字典變量?我問的原因是我想創建一個跨越多個CPU的進程,所以我不想在每個函數中聲明變量。
我使用的功能,但如果我需要使用類或有另一種方法來解決這個問題,那麼請我知道,我會重新考慮我的方法。
啊你right..I試圖在它自己和它的工作。我正在嘗試使用我已經擁有的一個過程並將其包裝到上面的函數中,以便我可以使用pp模塊對其進行多個cpus工作。似乎在我使用它創建作業時發生。 – Lostsoul 2012-02-12 02:32:05