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”属性无关。这是一个问题,因为我试图在我的实际代码中做什么。我错过了什么