我是靠谱客的博主 务实汉堡,最近开发中收集的这篇文章主要介绍pythonargs和kwargs 应用_多进程应用异步如何包装*args和**kwargs?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我试图让^{}同时接受*args和**kwargs。文档表明,这可能与调用序列有关:apply_async(func[, args[, kwds[, callback]]])

但我不知道如何使调用语法正确。举个最简单的例子:from multiprocessing import Pool

def f(x, *args, **kwargs):

print x, args, kwargs

args, kw = (), {}

print "# Normal call"

f(0, *args, **kw)

print "# Multicall"

P = Pool()

sol = [P.apply_async(f, (x,), *args, **kw) for x in range(2)]

P.close()

P.join()

for s in sol: s.get()

这可以按预期工作,给出输出# Normal call

0 () {}

# Multicall

0 () {}

1 () {}

当args不是空元组时,例如args = (1,2,3),单个调用可以工作,但多处理解决方案提供:# Normal call

0 (1, 2, 3) {}

# Multicall

Traceback (most recent call last):

File "kw.py", line 16, in

sol = [P.apply_async(f, (x,), *args, **kw) for x in range(2)]

TypeError: apply_async() takes at most 5 arguments (6 given)

使用kwargs参数,例如kw = {'cat':'dog'}# Normal call

0 () {'cat': 'dog'}

# Multicall

Traceback (most recent call last):

File "kw.py", line 15, in

sol = [P.apply_async(f, (x,), *args, **kw) for x in range(2)]

TypeError: apply_async() got an unexpected keyword argument 'cat'

如何正确包装multiprocess.apply_async?

最后

以上就是务实汉堡为你收集整理的pythonargs和kwargs 应用_多进程应用异步如何包装*args和**kwargs?的全部内容,希望文章能够帮你解决pythonargs和kwargs 应用_多进程应用异步如何包装*args和**kwargs?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部