如何解决无法访问多处理对象属性,对象没有属性
我有一个奇怪的问题。代码:
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),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()
这是一个基本的Multiprocessing-Optimization示例。我的问题与创建对象后访问每个过程对象的属性有关。如果删除最后四行,该程序将运行正常。如果运行包含最后四行的代码,则会出现错误:
“测试”对象没有属性“弹出”
同样,仅当包括最后四行时才与“ popt”属性无关。这是一个问题,因为我要在实际代码中尝试执行此操作。我在这里想念什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。