Python Can';t访问多处理对象属性,对象没有属性

Python Can';t访问多处理对象属性,对象没有属性,python,object,attributes,multiprocessing,Python,Object,Attributes,Multiprocessing,我有一个奇怪的问题。代码: import multiprocessing import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit import random class test(multiprocessing.Process): def __init__(self): multiprocessing.Process.__init__(self)

我有一个奇怪的问题。代码:

import multiprocessing
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import random


class test(multiprocessing.Process):
    def __init__(self):
        multiprocessing.Process.__init__(self)
    
        self.xdata = np.linspace(0, 4, 50) # create random curve values
        y = self.func(self.xdata, random.uniform(0,3), random.uniform(0,3), random.uniform(0,3))
        np.random.seed(1729)
        y_noise = 0.2 * np.random.normal(size=self.xdata.size)
        self.ydata = y + y_noise
    
    def func(self, x, a, b, c):
        return a * np.exp(-b * x) + c

    def run(self):
        print("starting process", self.name)
        self.popt, self.pcov = curve_fit(self.func, self.xdata, self.ydata) # fit curve data
        self.plot()

    def plot(self):
        print(self.popt)
        plt.plot(self.xdata, self.ydata, 'g') # plot initial curve data
        plt.plot(self.xdata, self.func(self.xdata, *self.popt), 'b--', label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(self.popt))
        plt.show()


if __name__ == '__main__':
    jobs = []
    for i in range(4):
        process = test()
        jobs.append(process)
        process.start()

    for j in jobs:
        j.join()
        print(j.name)
        j.plot()
这是一个基本的多处理优化示例。我的问题与创建对象后访问每个流程对象的属性有关。如果我去掉最后四行,程序就可以正常运行。如果在包含最后四行的情况下运行代码,则会出现错误:

“test”对象没有属性“popt”

同样,仅当包含最后四行时,这与“popt”属性无关。这是一个问题,因为我试图在我的实际代码中做什么。我错过了什么