20 Mart 2012, Salı
ne kadar basit bir python döngü parallelize?
bu önemsiz bir soru olacak ama nasıl python aşağıdaki döngü parallelize?
# setup output lists
output1 = list()
output2 = list()
output3 = list()
for j in range(0, 10):
# calc individual parameter value
parameter = j * offset
# call the calculation
out1, out2, out3 = calc_stuff(parameter = parameter)
# put results into correct output list
output1.append(out1)
output2.append(out2)
output3.append(out3)
Biliyorum python tek bir iş parçacığı başlatmak için nasıl ama nasıl bilmiyorum "toplamak" sonuçları. En kolay yolu bu kodu parallelize ne derece doğru. bu yüzden sorum şu:
CEVAP
20 Mart 2012, Salı
CPython üzerinde birden çok iş parçacığı kullanarak saf-Python kodu için daha iyi performans global ınterpreter lock (GİL) nedeniyle vermiyor. Bunun yerine multiprocessing
modül kullanmanızı öneririm:
pool = multiprocessing.Pool(4)
out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
Bu interaktif yorumlayıcı işe yaramaz unutmayın.
GİL etrafında her zamanki FUD önlemek için: bu örnek, iş parçacığı zaten kullanmanın herhangi bir avantajı olmaz. Sanaistiyorumsorun bir sürü kaçının çünkü işler burada kullanmak için, iplikler,.
Bunu Paylaş:
Neden `1000000000000000 aralığı(100000...
Nasıl hat ucuza Python kadar sayalım m...
Herhangi bir NoSQL veritabanı SQLite k...
Bir liste python değeri öğe silmek içi...
Neden tanıtan bir işe yaramaz MOV tali...