gpt4 book ai didi

python - 将多处理作业的中间结果转储到文件系统,稍后继续处理

转载 作者:行者123 更新时间:2023-11-28 22:13:24 25 4
gpt4 key购买 nike

我有一份工作使用 multiprocessing 包并通过

调用一个函数

resultList = pool.map(myFunction, myListOfInputParameters)

输入参数列表的每个条目都独立于其他条目。

这项工作将运行几个小时。出于安全原因,我想以固定的时间间隔存储其间的结果,例如每小时一次。

当作业被中止并且我想根据最后可用的备份重新启动它时,我该如何做到这一点并能够继续处理?

最佳答案

也许使用 pickle。在这里阅读更多内容:

https://docs.python.org/3/library/pickle.html

根据 aws_apprentice 的评论,我创建了一个完整的多处理示例,以防您不确定如何使用中间结果。第一次运行时它将打印“无”,因为没有中间结果。再次运行模拟重启。

from multiprocessing import Process
import pickle

def proc(name):
data = None

# Load intermediate results if they exist
try:
f = open(name+'.pkl', 'rb')
data = pickle.load(f)
f.close()
except:
pass

# Do something
print(data)
data = "intermediate result for " + name

# Periodically save your intermediate results
f = open(name+'.pkl', 'wb')
pickle.dump(data, f, -1)
f.close()

processes = []
for x in range(5):
p = Process(target=proc, args=("proc"+str(x),))
p.daemon = True
p.start()
processes.append(p)

for process in processes:
process.join()

for process in processes:
process.terminate()

如果以人类可读格式输出中间结果有意义,您也可以使用 json。如果您需要将数据推送到行中,或者将 sqlite 作为数据库。

关于python - 将多处理作业的中间结果转储到文件系统,稍后继续处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53996035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com