Rod*_*d0n 6 python python-multiprocessing
我有以下功能:
def create_job(target, args):
p = multiprocessing.Process(target=target, args=args)
p.start()
return p
Run Code Online (Sandbox Code Playgroud)
上面的函数被调用:
ps = create_job(mc.collect_categories, (cat_ids),)
Run Code Online (Sandbox Code Playgroud)
作为 cat_ids 'ids' 列表:['ML68', 'MA453','MA33']
当我运行代码时,出现以下错误(包含 10 个 cat_ids 的列表):
TypeError: collect_categories() takes exactly 2 arguments (11 given)
Run Code Online (Sandbox Code Playgroud)
我尝试用“*”传递值来解压它,但这不是问题。
(cat_ids)与 相同cat_ids。相反,使用(cat_ids, )一个元素来表示一个元组:
ps = create_job(mc.collect_categories, (cat_ids, ),)
Run Code Online (Sandbox Code Playgroud)
或者,您可以create_job 使用*args以下方式定义:
def create_job(target, *args):
p = multiprocessing.Process(target=target, args=args)
p.start()
return p
Run Code Online (Sandbox Code Playgroud)
并致电create_job:
ps = create_job(mc.collect_categories, cat_ids)
Run Code Online (Sandbox Code Playgroud)
在内部create_job,变量args将是传递给的所有位置参数(第一个除外)的元组create_job——正是您想要传递给的Process。
| 归档时间: |
|
| 查看次数: |
8714 次 |
| 最近记录: |