【发布时间】:2020-11-09 06:26:17
【问题描述】:
我有什么:
ids = [1,2,3...]
dates = ['a', 'b', 'c'...]
def f(id, date):
print(f'{id} - {date}')
我打算做什么: 在多线程中使用 id、日期作为参数的每个组合运行 f
预期输出:
1 - a
1 - b
1 - c
2 - a
2 - b
2 - c
3 - a
3 - b
3 - c
...
这显然行不通
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
executor.map(f, ids, dates)
这也不起作用,看起来很笨拙: 首先使用循环来构建参数组合列表,例如
args = [[1,a][1,b][1,c]
[2,a],[2,b],[2,c]
...
]
并将其传递给 f:
executor.map(f, args)
或
executor.map(f, *args)
都失败了
或者重新设计 f 使其只需要一个参数?
一定有个好办法……
【问题讨论】:
标签: python python-3.x multithreading arguments