Çoklu işlem yaparken global değişkeni değiştirme Sonunda ne yapmaya çalıştığım bir satır okuyor, bu satırdaki bilgilerle bazı hesaplamalar yapıyor, sonra sonucu bazı genel nesnelere ekliyor, ama asla elde edemiyorum çalışmak. Örneğin, aşağıdaki kodda test her zaman 0'dır. Bunun yanlış olduğunu biliyorum ve bunu başka yollarla yapmaya çalıştım ama hala çalışmıyor.python
import multiprocessing as mp
File = 'HGDP_FinalReport_Forward.txt'
#short_file = open(File)
test = 0
def pro(temp_line):
global test
temp_line = temp_line.strip().split()
test = test + 1
return len(temp_line)
if __name__ == "__main__":
with open("HGDP_FinalReport_Forward.txt") as lines:
pool = mp.Pool(processes = 10)
t = pool.map(pro,lines.readlines())
Globaller genellikle yanlış bir şey yapıyorsun bir göstergesidir. Programınızın onları engellemek için çalışma şeklini değiştirmenizi öneriyorum - uzun vadede baş ağrılarından kurtulacak ve her zaman daha iyi bir yol olacaktır. –
Çok işlemcili modülün amacı, aynı işlemdeki iş parçacıklarından ziyade çocuk işlemlerini, her zamanki alışkanlıklarla ortaya çıkarmasıdır. Ne yazık ki, belgeler zaten bunları bildiğinizi varsayarak, bu tradeoffları açıklamıyor. Dokümantasyondaki "Programlama yönergeleri" nin tamamını uygularsanız, anlamadan uzaklaşabilirsiniz, ama gerçekten öğrenmelisiniz. – abarnert