SORU
26 Mart 2011, CUMARTESİ


Çoklu havuzu Python.birden çok bağımsız değişkenleri göster

Python Kütüphanesi çoklu, orada havuz çeşididir.birden çok bağımsız değişken Destek göster?

text = "test"
def harvester(text, case):
    X = case[0]
    text  str(X)

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=6)
    case = RAW_DATASET
    pool.map(harvester(text,case),case, 1)
    pool.close()
    pool.join()

CEVAP
26 Mart 2011, CUMARTESİ


orada havuz bir türevi.birden çok bağımsız değişken Destek göster?

Python 3.3 pool.starmap() method içerir:

#!/usr/bin/env python3
from functools import partial
from itertools import repeat
from multiprocessing import Pool, freeze_support

def func(a, b):
    return a   b

def main():
    a_args = [1,2,3]
    second_arg = 1
    with Pool() as pool:
        L = pool.starmap(func, [(1, 1), (2, 1), (3, 1)])
        M = pool.starmap(func, zip(a_args, repeat(second_arg)))
        N = pool.map(partial(func, b=second_arg), a_args)
        assert L == M == N

if __name__=="__main__":
    freeze_support()
    main()

Eski sürümleri için:

#!/usr/bin/env python2
import itertools
from multiprocessing import Pool, freeze_support

def func(a, b):
    print a, b

def func_star(a_b):
    """Convert `f([1,2])` to `f(1,2)` call."""
    return func(*a_b)

def main():
    pool = Pool()
    a_args = [1,2,3]
    second_arg = 1
    pool.map(func_star, itertools.izip(a_args, itertools.repeat(second_arg)))

if __name__=="__main__":
    freeze_support()
    main()

Çıktı

1 1
2 1
3 1

itertools.izip() itertools.repeat() burada nasıl kullanıldığına dikkat edin.

the bug mentioned by @unutbu nedeniyle Python 2.6, basit bir sarıcı işlevi func_star() açıkça tanımlanmış olmalıdır functools.partial() veya benzer özellikleri kullanamazsınız. Ayrıca the workaround suggested by uptimeboxbakın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eHow

    eHow

    27 NİSAN 2006
  • Jonnyriddlin1

    Jonnyriddlin

    4 Ocak 2007
  • Mega64

    Mega64

    24 ŞUBAT 2006