使用 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']
...
...
假设我有一本字典,例如
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']
...
...