Один из способов go - получить полные пути всех файлов, представленных в данном folder_id(i)
. Затем вы можете передать эти file_paths
и func
в runInParallel
, который затем применяет func
к каждому файлу параллельно. , Вы также должны изменить функцию func
, чтобы она могла принимать file_path
в качестве аргумента. Вот код, который облегчает эту задачу,
import os
from multiprocessing import Process
def runInParallel(file_paths, func):
proc = []
for path in file_paths:
p = Process(target=func, args=(path,))
p.start()
proc.append(p)
for p in proc:
p.join()
def foo(folder_id):
paths = [os.path.join(folder_id, filename) for filename in os.listdir(folder_id)]
file_paths = [path for path in paths if os.path.isfile(path)]
runInParallel(file_paths, func)
ИЛИ Вместо Process
вы можете использовать multiprocessing.Pool
, чтобы облегчить эту задачу,
def runInParallel(file_paths, func):
with Pool() as pool:
results = pool.map(func, file_paths)
ОБНОВЛЕНИЕ (Согласно вашим комментариям):
, если modelo
является файловым объектом, обновите свой метод desagregadorLSTM
как,
def desagregadorLSTM(path, df, medicoes=96):
with open(path, "r") as modelo:
model = load_model(modelo)
model.summary()
df = df
X, y = f.separar_interface(df, n_steps=40)
X = X.reshape(X.shape[0], 2, 20, X.shape[2])
y = y.reshape(y.shape[0], 40, 1)
test_predictions = model.predict(X).flatten()
y = y.flatten()
Вызов,
runInParallel(file_paths, tms.desagregadorLSTM)
Ало обновление,
p = Process(target=func, args=(path, df), kwargs={"medicoes": 96 })