Python gevent : pass multiple arguments to function called via pool. map

标签 python gevent

如何将多个参数传递给通过 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

最佳答案

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

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

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

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

关于Python gevent : pass multiple arguments to function called via pool. map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13490346/

相关文章:

python - 如何从另一个模型操纵一个模型字段的值?

python - 使用 Gevent 记录多个协程/greenlets/微线程?

django - 什么是与Django搭配使用的最佳socket.io服务器-gevent或tornadio2?

python - celery 任务不适用于 gevent

python - Django:客户端与流断开连接后清理redis连接

python - Python 的 dir() 函数代表什么?

python - 如何在不使用 Python 中的外部库的情况下解析 arff 文件

python - 仅命名 pandas.read_csv 读取的数据集的最后一列

python - PyMongo 和 gevent 的死锁

python - np.where 多个逻辑语句 pandas