Код: Выделить всё
import numpy as np
from multiprocessing import Pool
from functools import partial
def read_profiles(stamp,name,cols,*args):
#This function reads each file.
filename=name + '-' + str(int(timestep[stamp])) + '.dat'
with open(filename) as f:
xloc = 0
for line in f:
ele = line.rstrip("\n").split()
for g in len(args):
args[g][stamp,xloc] = float(ele[cols[g]])
xloc = xloc + 1
timestep = np.arange(1,51)
x = np.ndarray(shape=(len(timestep),1001))
Ex = np.ndarray(shape=(len(timestep),1001))
j1 = np.ndarray(shape=(len(timestep),1001))
j2 = np.ndarray(shape=(len(timestep),1001))
j3 = np.ndarray(shape=(len(timestep),1001))
j4 = np.ndarray(shape=(len(timestep),1001))
terse_args = [x,Ex]
curr_args = [j1,j2,j3,j4]
with Pool(4) as pool:
pool.map(partial(read_profiles,name='terse',cols=[0,2],*args=*terse_args),range(len(timestep)))
pool.map(partial(read_profiles,name='current',cols=[1,2,3,4],*args=*curr_args),range(len(timestep)))
Приведенный выше код выдает ошибку с сообщением «неверный синтаксис» в *args. Я пробовал передать их как позиционные аргументы без ключевых слов, но затем получаю сообщение об ошибке с указанием нескольких значений для «имени».
Кто-нибудь знает, как я могу включить произвольное количество двумерных массивов в качестве аргумент функции при использовании пула.map и частичного?
Сообщите мне, если потребуется какая-либо другая информация.
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -of-arrays