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

  • BMG Rentals Property Management

    BMG Rentals

    23 Mayıs 2011
  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • wolfys you tube

    wolfys you t

    22 Kasım 2006