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

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • joshsnice

    joshsnice

    28 Kasım 2006
  • max2sims2

    max2sims2

    19 Kasım 2008