如何在joblib的并行forloop过程中追加list

2024-04-25 13:40:24 发布

您现在位置:Python中文网/ 问答频道 /正文

原谅我的无知。我有一个很大的数据列表,我想处理。我的脚本正在运行,但是非常慢,因此我想切换到多处理。我的脚本总共要运行30天,但我想加快这个过程。我的原始脚本已经过优化,因此它在循环期间追加了列表。这是非常有用的,因为它允许我在需要的时候打开我的电脑。我将给出一个随机工作的例子来重现这个问题。请注意以下代码,因为它可能会减慢您的计算机速度。其思想是在运行时在某处停止以下代码。在

from joblib import Parallel, delayed
import multiprocessing
from tqdm import tqdm
num_cores = multiprocessing.cpu_count()

Crazy_long_list=list(range(0,10000000,1))

def get_data(i):
    return ((i * 2),(i/2))

normal_output=[]
# Without parallel processing
for i in Crazy_long_list:
    normal_output.append(get_data(i))

当此脚本在任何时候停止时,附加的列表将保留。因此,我可以将所需的_输出保存到.csv,第二天,加载它,并在我结束的地方运行脚本。您可以通过运行部分代码并在随机时刻停止它来测试这一点。应该保存数据。在

^{pr2}$

我的并行方法如下:

parallel_data=[]
parallel_data=Parallel(n_jobs=num_cores, verbose=50)(delayed(get_data)(i)for i in tqdm(Crazy_long_list))

不幸的是,当我在运行一段时间后停止脚本时,在parallel_data列表中找不到数据。它似乎只有在整个列表都已完成时才起作用。谁能在这里帮我??在

print(parallel_data)
[]

Tags: 数据代码fromimport脚本列表dataget