Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 跟踪Joblib中并行for循环的索引_Python_Loops_Parallel Processing_Joblib - Fatal编程技术网

Python 跟踪Joblib中并行for循环的索引

Python 跟踪Joblib中并行for循环的索引,python,loops,parallel-processing,joblib,Python,Loops,Parallel Processing,Joblib,在Python中,我有一个需要在循环中迭代的对象列表,并为每次迭代输出一个结果,同时跟踪正在迭代的对象的索引 通常,这不是问题,因为我可以使用enumerate并执行以下操作 results = [] for index, value in enumerate(list_of_objects): ... *calculations* ... results.append([index, result_of_calculations]) 然而,最近我的计算时间太长了,所以我开

在Python中,我有一个需要在循环中迭代的对象列表,并为每次迭代输出一个结果,同时跟踪正在迭代的对象的索引

通常,这不是问题,因为我可以使用
enumerate
并执行以下操作

results = []

for index, value in enumerate(list_of_objects):
    ... *calculations* ...

    results.append([index, result_of_calculations])
然而,最近我的计算时间太长了,所以我开始用它来并行我的循环。但是,现在我无法使用
枚举
跟踪操作索引,因为循环的每一部分都可以在不规则的时间开始和结束,我被难住了

如果子数组的每个第一个值都引用了用于特定迭代的对象的索引,我如何让下面这样的代码工作

from joblib import Parallel, delayed

def single_loop_function(x):
    single_output = *some calculations based on x*
    return single_output

all_output = Parallel(n_jobs=-1, verbose=3, backend="loky")(
    map(delayed(single_loop_function), list_of_objects))

print(all_output)
[[0, *result*], [1, *result*], ... [5, *result*], [3, *result*]] 

即使
joblib
不一定明确支持此功能,我还是找到了一种更好的(更具python风格的)方法(二战对这个问题的评论):将
list\u对象
转换成这样的子列表

new_list = [[i, value] for i, value in enumerate(list_of_objects)]
并将
new_list
馈送到joblib函数中,每个对象的索引将显式附加到该函数中