2017-08-04 67 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

starmapintroduced in Python3.3。在Python2,使用Pool.map並解壓論證自己:

在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] 

在Python2或Python3:Python中的

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() 
相關問題