2

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
4

1 に答える 1

4

このgevent.Pool.mapメソッドでは、指定した関数に引数として渡すことができるのは1つの項目だけであるようです。ただし、引数を非常に簡単に解凍するように関数をコーディングできます。

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

pool.mapまたは、 :への呼び出しでラムダ式を使用して引数のアンパックを処理することもできます。

results = pool.map(lambda args: process(*args), jobs)
于 2012-11-21T09:57:47.917 に答える