我正在尝试使用current.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
,我无法找出一种始终将特定时间序列映射到同一内核的方法,或者无法以某种方式共享以前尝试到新内核上运行的进程的状态。
在当前设置下,每当在新内核上调用特定时间戳的处理时,该处理便从初始化步骤开始。
这个问题有解决方案吗?