【问题标题】:Python gevent: pass multiple arguments to function called via pool.mapPython gevent:将多个参数传递给通过 pool.map 调用的函数
【发布时间】:2012-11-21 09:44:10
【问题描述】:

如何将多个参数传递给我通过 pool.map 调用的函数?

我的代码:

import gevent
from gevent.pool import Pool

def process(param1, param2):
    return "dosomething"

pool = Pool(10)
jobs = [('arg1a', 'arg1b'), ('arg2a', 'arg2b')]

# should pass arguments so that it results in these calls
# process(param1=arg1a, param2=arg1b)
# process(param1=arg2a, param2=arg2b)
results = pool.map(process, jobs) # does not work

【问题讨论】:

  • 它可能看起来像pool.map(unpack(process), jobs)。如果需要,您可以投票支持将 unpack 装饰器添加到 funcy 库。 github.com/Suor/funcy/pull/62

标签: python gevent


【解决方案1】:

看来gevent.Pool.map 方法只允许将单个项目作为参数传递给您提供的函数。但是,您可以编写函数代码以非常轻松地解压缩其参数:

def process(params):
    param1, param2 = params
    ...

或者您可以在调用 pool.map 时使用 lambda 表达式处理参数解包:

results = pool.map(lambda args: process(*args), jobs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-22
    • 2019-07-05
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多