如何将目标函数的命名参数以key=value形式传入multiprocessing.Process
解决multiprocessing.Process传递命名参数的问题
直接用multiprocessing.Process的kwargs参数即可传递命名关键字参数,具体用法如下:
args参数仅用于传递位置参数,接受一个元组,不能在元组内写key=value的形式(这会触发语法错误)。- 传递命名参数需要使用
kwargs参数,它接受一个字典,键为目标函数的参数名,值为对应参数值。
示例代码
import multiprocessing def foo(arg_1, arg_2): print(f"arg_1: {arg_1}, arg_2: {arg_2}") if __name__ == "__main__": val1 = "测试值1" val2 = "测试值2" # 正确传递命名参数 process = multiprocessing.Process(target=foo, kwargs={'arg_1': val1, 'arg_2': val2}) process.start() process.join()
补充说明
你之前报错的原因是args=(arg_1=value1, arg_2=value2)属于非法语法——Python的元组不支持这种键值对写法。args的正确用法是传入位置参数的序列,比如args=(val1, val2)对应foo(val1, val2);而命名参数必须通过kwargs字典传递,这样目标函数就能正确识别参数名,避免传参错误。
内容的提问来源于stack exchange,提问作者MIku
相关产品推荐
相关产品推荐

