有没有办法同时将每个 joblib.parallel 运行 的结果写入自己的文件?
Is there a way to simultaneously write the result of each joblib.parallel run into its own file?
单个并行 运行 的每个 "parallel" 结果都需要写入它自己的文件中。如果我能够为每个结果命名,这也可以解决。
我有一个生成一些数据的函数。每次都是 运行,数据略有不同,因此我需要 运行 几次。我目前有使用 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)]
如果您只想让每个进程写入它自己的文件,您可以执行以下操作。
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))
但我不确定您为什么要这样做,如果您更详细地告诉我们您的最终目标是什么,我相信我们可以提供更多帮助。
单个并行 运行 的每个 "parallel" 结果都需要写入它自己的文件中。如果我能够为每个结果命名,这也可以解决。
我有一个生成一些数据的函数。每次都是 运行,数据略有不同,因此我需要 运行 几次。我目前有使用 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)]
如果您只想让每个进程写入它自己的文件,您可以执行以下操作。
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))
但我不确定您为什么要这样做,如果您更详细地告诉我们您的最终目标是什么,我相信我们可以提供更多帮助。