将项列表传递给多处理功能

时间:2014-12-09 20:59:11

标签: python python-multiprocessing

我有以下功能:

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)

我尝试用' *'传递值。打开包装,但这不是问题所在。

1 个答案:

答案 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}的内容}}