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 uptimebox
bakın.
Bunu Paylaş:
't turşu <type ''>...
Python Çoklu işlem.Uygulamak, apply_as...
Çoklu iş parçacığı havuzu Havuza benze...
Python ile birden çok bağımsız değişke...
Klavye'çoklu Havuzu s python ile ...