Есть ли способ одновременно записать результат каждого запуска joblib.parallel в отдельный файл? - PullRequest
1 голос
/ 04 апреля 2019

Каждый «параллельный» результат одного параллельного прогона должен быть записан в его собственный файл.Это также можно решить, если бы я смог назвать каждый результат.

У меня есть функция, которая генерирует некоторые данные.Каждый раз, когда он запускается, данные немного отличаются, и поэтому мне нужно запустить его несколько раз.В настоящее время у меня есть рабочий код, который использует joblib.Parallel, чтобы ускорить этот процесс.Проблема заключается в том, что в результате получается один длинный список всех параллельных прогонов, и его запись в отдельные файлы сложна и подвержена ошибкам.


def fn(x):
    for i in np.linspace(0, x, 1000):
        a = x
        b = 2*x
        return a, b

ans = Parallel(n_jobs=-1)(delayed(fn)(x) for x in np.linspace(0,5,5))
ans
# I need to either name/extract each result in the list below, or directly write each into its own file
out[]: [(0.0, 0.0), (1.25, 2.5), (2.5, 5.0), (3.75, 7.5), (5.0, 10.0)]

1 Ответ

0 голосов
/ 04 апреля 2019

Если вы просто хотите, чтобы каждый процесс записывал в свой файл, вы можете сделать следующее:

def fn(x):
    for i in np.linspace(0, x, 1000):
        a = x
        b = 2*x
        with open(str(x)+"_file.csv", 'w') as file:
            file.write(a, b)

        return a, b

ans = Parallel(n_jobs=-1)(delayed(fn)(x) for x in np.linspace(0,5,5))

Но я не уверен, почему вы захотите сделать это, если вы дадите нам знать, чтоВаша конечная цель более подробно, я уверен, что мы можем помочь больше.

...