2016-04-14 40 views
0

Diyelim ki oldukça geniş bir "A" listesi var ve her bir öğeyi değiştirmek için çalışmak istiyorum ve bunu yapmak için kullanmak istediğim bir "f" işlevim var.Python'da bir listeye paralellama

Çok işlemcili kütüphaneye baktım ama bunun hakkında birkaç sorum var. o değişecektir Ben f A değiştirirseniz

  1. :

    bu birkaç soru için Şimdi her iplik

    pool = Pool(num_threads) 
    pool.map(f,A)     
    

    benim f fonksiyonu aramam gerekiyordu nasıl olduğunu düşünüyorum f dışında?

  2. F bölümlerine ayrılan bölümlere nasıl başvurabilirim?

cevap

0

Eğer A'yı değiştirirseniz, f dışında değiştirilecek mi? No. f, A erişimini bile - map'un A üzerinden yinelenmesi ve her öğeyi f'a iletmektir. Tür gibi:

for elem in A: 
    f(elem) # but called in a separate process 

nasıl f kapalı kesitli edildiğini A parçası ifade eder? The first example in the docs, bölümlendirilmiş olan bölüme nasıl başvurduğunuzu gösterir (dizininizin her öğesi). İşleviniz, f, A dizisinin bir öğesi atanacak bir parametre almalıdır.

Diğer işlemlerde çalışan ana işleminiz & arasındaki iletinin iletilmesi için pipes or queues'a bakmak isteyebilirsiniz. Başka bir iyi seçenek manager olacaktır.