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

  • Darren Kitchen

    Darren Kitch

    3 EKİM 2011
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010
  • TheXiaxue

    TheXiaxue

    3 AĞUSTOS 2009