संभव डुप्लिकेट बहु:
Python multiprocessing global variable updates not returned to parentवैश्विक चर और अजगर
मैं कई कोर के साथ एक कंप्यूटर का उपयोग कर रहा हूँ और प्रदर्शन लाभ के लिए मैं वास्तव में एक से अधिक प्रयोग करना चाहिए। हालांकि, मैं उलझन में हूँ क्यों कोड की इन बिट्स मैं क्या उम्मीद नहीं करते:
from multiprocessing import Process
var = range(5)
def test_func(i):
global var
var[i] += 1
if __name__ == '__main__':
jobs = []
for i in xrange(5):
p = Process(target=test_func,args=(i,))
jobs.append(p)
p.start()
print var
साथ ही
from multiprocessing import Pool
var = range(5)
def test_func(i):
global var
var[i] += 1
if __name__ == '__main__':
p = Pool()
for i in xrange(5):
p.apply_async(test_func,[i])
print var
मैं परिणाम [1, 2, 3, 4, 5]
होने की उम्मीद है, लेकिन परिणाम [0, 1, 2, 3, 4]
है।
प्रक्रियाओं के साथ वैश्विक चर का उपयोग करने में मुझे कुछ सूक्ष्मता होनी चाहिए। क्या यह इस तरह से एक चर बदलने की कोशिश करने से बचने का तरीका भी है?
देखो http://stackoverflow.com/questions/659865/python-multiprocessing-sharing-a-large-read-only-object-between-processes – 8bitwide
आप से ये कोड स्निपेट चला रहे हैं एक स्क्रिप्ट, या एक पायथन कंसोल के अंदर निष्पादन? –
आपको एक मल्टीप्रोसेसिंग प्रबंधक के साथ अपनी सूची का प्रबंधन करना चाहिए। – mgilson