SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmbarkToHeaven

    EmbarkToHeav

    3 EYLÜL 2007
  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • ipsy Makeup Tips

    ipsy Makeup

    19 ŞUBAT 2009