小编Anu*_*ka 的帖子

AttributeError:无法在多处理中腌制本地对象

我对 python 很陌生,遇到了这个错误。代码1:

import multiprocessing as mp
import os
 
def calc(num1, num2):
    global addi
    def addi(num1, num2):
        print(num1+num2)
    m = mp.Process(target = addi, args = (num1, num2))
    m.start()

    print("here is main", os.getpid())
    m.join()
  
if __name__ == "__main__":
    # creating processes
   calc(5, 6)

ERROR 1 :    ForkingPickler(file, protocol).dump(obj)
AttributeError: Can't pickle local object 'calc.<locals>.addi'
Run Code Online (Sandbox Code Playgroud)

阅读了一些内容后,我了解到 pickle 不能用于本地方法,因此我也尝试了下面的解决方案,该解决方案给出了另一个错误。

代码2:

import multiprocessing as mp
import os
   
def calc(num1, num2):
    **global addi**
    def addi(num1, num2):
        print(num1+num2)
    m = mp.Process(target = addi, args = (num1, …
Run Code Online (Sandbox Code Playgroud)

multiprocessing attributeerror python-3.8

26
推荐指数
1
解决办法
5万
查看次数