python文档中所有这些奇怪的括号是什么

时间:2014-12-24 11:16:56

标签: python multiprocessing

有人可以告诉我python文档说的话:

apply_async(func [,args [,kwds [,callback]]])

https://docs.python.org/2/library/multiprocessing.html#multiprocessing.pool.multiprocessing.Pool.apply_async)。

我不确定func,args,kwds和callback在这里应该是什么意思。据我所知,你基本上将apply_async传递给一个函数,然后使用该函数的参数(大概这就是" func"和#34; args"意思)。我不清楚什么" kwds"或者"回调"是,或为什么方括号以它们的方式嵌套在彼此之内。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

括号表示该字段是可选的。你必须传递apply_async一个函数名(func),你可以传递它的参数,关键字等。

我会想象它是在python样式指南中,虽然我没有搜索验证: https://www.python.org/dev/peps/pep-0008/

(即使这个答案不在那里,指南也值得一读!)

编辑:

要扩展这一点 - 如果你有一个不带任何参数的函数(比如它随机种子然后执行一些计算)你可以用它来调用它:

from multiprocessing import Pool
pool = Pool(4) # use four processes

pool.apply_async(function_name)

如果你的函数需要参数,那么这可行:

pool.apply_async(function_name, argument_name)

或:

pool.apply_async(function_name, args =(arg1_name, arg2_name))

如果您使用关键字:

pool.apply_async(function_name, args=(arg1, arg2, etc), kwds={key_name: value_name})

到目前为止,我没有理由使用关键字,参数总是做我需要的。我遗漏了kwds中可能有特殊的深层魔法,因为它没有出现在我身上。