使用 concurrent.futures.ThreadPoolExecutor 处理列表字典的每个元素

processsing each element of dictionary of lists using concurrent.futures.ThreadPoolExecutor

假设我有一本字典,例如

dict = {A:[1,2,3], B:[4,5,6], C:[7,8,9], ......}

我想一个接一个地处理特定键列表的每个元素,但可以使用 concurrent.futures.ThreadPoolExecutor

并行处理各个键
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as ex:
  ex.submit(process_element, contents of A)
  ex.submit(process_element, contents of B)
  ex.submit(process_element, contents of C)
  .
  .
  .

所以输出应该是

result of process_element A[0]
result of process_element B[0]
result of process_element C[0]

.
.
.

result of process_element A[1]

但在那个顺序中没有必要

上述方法有什么问题?

看起来您传递的不是列表,而是一个名为 'A' 的变量。我不确定你 运行 你的代码为什么没有收到错误。下面是你想要的

with concurrent.futures.ThreadPoolExecutor(max_workers=3) as ex:
  ex.submit(process_element, dict['A'])
  ex.submit(process_element, dict['B'])
  ex.submit(process_element, dict['C'])

要逐一处理每个元素,那么你可以简单地使用列表结构:

with concurrent.futures.ThreadPoolExecutor(max_workers=3) as ex:
  procsA = [ex.submit(process_element, elem) for elem in dict['A']
  ...
  ...