我有以下功能:
def create_job(target, args):
p = multiprocessing.Process(target=target, args=args)
p.start()
return p
上述函数由:
调用ps = create_job(mc.collect_categories, (cat_ids),)
将cat_ids列为':[' ML68',' MA453',' MA33']
当我运行代码时,我收到以下错误(包含10个cat_id的列表):
TypeError: collect_categories() takes exactly 2 arguments (11 given)
我尝试用' *'传递值。打开包装,但这不是问题所在。
答案 0 :(得分:2)
(cat_ids)
与cat_ids
相同。
而是使用(cat_ids, )
来表示具有一个元素的元组:
ps = create_job(mc.collect_categories, (cat_ids, ),)
或者,您可以定义create_job
using *args
:
def create_job(target, *args):
p = multiprocessing.Process(target=target, args=args)
p.start()
return p
并使用:
致电create_job
ps = create_job(mc.collect_categories, cat_ids)
在create_job
内,变量args
将是传递给create_job
的所有位置参数(第一个除外)的元组 - 正是您要传递给{{1}的内容}}