2017-08-04 8 views
0

に並列コードの作品を​​作り、私はこのようなものですのpython 3.6でいくつかのコードがあります。のpython 2.7および3.6

ここ
from multiprocessing import Pool 
with Pool(processes=4) as p: 
    p.starmap(parallel_function, list(dict_variables.items())) 

dict_variablesは次のようになります。

[('aa', ['ab', 'ab', 'ad']), ('aa1', ['a1b', 'a1b', 'a2d'])] 

このコードはのみpythonで動作します3.6。それを2.7で動作させるにはどうすればいいですか?

+0

古いバージョンが構築されていなかったことを処理できるようにコードの種類。より新しいビルド用の古いコードを変換できるのは(ほとんどの場合) –

答えて

1

starmapは、introduced in Python3.3であった。 Python2では、自分でPool.mapを使用すると、引数を展開します。

のpython3で

:Python2かのpython3で

import multiprocessing as mp 

def starmap_func(x, y): 
    return x**y 

with mp.Pool(processes=4) as p: 
    print(p.starmap(starmap_func, [(1,2), (3,4), (5,6)])) 
    # [1, 81, 15625] 

:パイソンの

import multiprocessing as mp 

def map_func(arg): 
    x, y = arg 
    return x**y 

p = mp.Pool(processes=4) 
print(p.map(map_func, [(1,2), (3,4), (5,6)])) 
# [1, 81, 15625] 
p.close() 
関連する問題