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

  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • Howcast

    Howcast

    4 EKİM 2007
  • ShoSho

    ShoSho

    20 Ocak 2010