【发布时间】:2021-10-21 11:45:02
【问题描述】:
我正在尝试将参数字典解压缩到作为单独进程运行的函数中,但出现“意外表达式”错误,这让我抓狂。我正在使用“**”运算符,这给了我一个错误,但是当我只使用“*”时,它可以工作,但只会将键的名称传递给相应的参数。
我在其他问题中找不到在 StackOverflow 上遇到类似问题的人。我问的不合理吗?我该如何解决?非常感谢您的帮助。
import numpy as np
import multiprocessing as mp
class sample:
def sample_proc_fun(self, arg1, arg2, arg3, piece_of_list):
pass
def parallel_ticker_workload(self, partial_fun_params, list_raw_file_names, n_core):
# shuffle to distribute file sizes evenly
list_pieces = np.array_split(list_raw_file_names, n_core)
processes = []
for i in range(n_core):
p = mp.Process(target=self.sample_proc_fun, args=(**partial_fun_params, list_pieces[i]))
p.daemon = True # kills this child process if the main program exits
processes.append(p)
[x.start() for x in processes]
[x.join() for x in processes]
【问题讨论】:
-
“我正在尝试将参数字典解压缩到函数中”不,这不是你在做什么。您正在尝试使用
**作为元组文字的一部分,但正如错误所解释的那样,这是不允许的(因为位没有多大意义) -
@juanpa.arrivillaga 我现在看到“args”只接受一个参数元组,但是如何传递字典并将其内容映射到我试图创建多个进程的函数的参数的?
-
你能制作一个运行程序来演示问题并包含回溯消息吗?
-
查看我的答案,使用 kwargs 参数
标签: python dictionary multiprocessing