0

我正在尝试使用 concurrent.futures.ProcessPoolExecutor() 运行一些非常大的时间序列数据。数据集包含多个时间序列(它们是独立的)。整个数据集在data我通过辅助函数传递的元组列表中可用,如下所示:

def help_func(daa):
    large_function(daa[0], daa[1], daa[2])

with concurrent.futures.ProcessPoolExecutor() as executor:
    executor.map(help_func, data, chunksize=1)

现在,虽然数据中包含的不同时间序列在列之间是独立的,但是由于时间序列数据的性质,一个时间序列内的值需要一个接一个地处理。通过data根据不同的时间序列对变量进行排序,我确信 map 总是会随着时间的推移按顺序进行调用。

由于executor.map我无法找到始终将特定时间序列映射到同一个核心的方法,或者以某种方式将先前尝试的状态共享到在新核心上运行的进程。

使用当前设置,每当在新内核上调用特定时间戳的处理时,它都会从初始化步骤开始。

这个问题有什么优雅的解决方案吗?

4

0 回答 0