将多个参数传递给concurrent.futures.Executor.map? [英] Pass multiple parameters to concurrent.futures.Executor.map?
本文介绍了将多个参数传递给concurrent.futures.Executor.map?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
concurrent.futures.Executor。 map
采用可变数目的迭代,从中调用给定的函数。 如果我有一个生成器可以生成正常解压缩的元组,那么应该如何调用它?
每个生成的元组作为映射的不同参数给出:
The following doesn't work because the each of the generated tuples is given as a different argument to map:
args = ((a, b) for (a, b) in c)
for result in executor.map(f, *args):
pass
b $ b
没有生成器,映射的所需参数可能如下所示:
Without the generator, the desired arguments to map might look like this:
executor.map(
f,
(i[0] for i in args),
(i[1] for i in args),
...,
(i[N] for i in args),
)
推荐答案
您需要删除地图
上的 *
:
args = (a, b for b in c)
for result in executor.map(f, args):
pass
这将调用 f
, len
次,其中 f
应接受一个参数。如果你想要 f
接受两个参数,你可以使用一个lambda调用,如:
This will call f
, len(args)
times, where f
should accept one parameter. If you want f
to accept two parameters you can use a lambda call like:
args = (a, b for b in c)
for result in executor.map(lambda p: f(*p), args):
pass
这篇关于将多个参数传递给concurrent.futures.Executor.map?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文