我试图使用多处理来运行Python方法:
from pylab import *
import multiprocessing
class surface(multiprocessing.Process):
def __init__(self,fE,fH,pm):
multiprocessing.Process.__init__(self)
self.fE = fE
self.fH =fH
self.pm = pm
def run(self):
self.meshx = [x for x in self.fE["Mesh/x"]]
self.meshy = [y for y in self.fE["Mesh/y"]]
self.meshz = [z for z in self.fE["Mesh/z"]]
.
.
.
.
self.powerflux = 300
.
.
xp = surface(fExp,fHxp,"p")
xp.start()
.
.
xp.join()
print "wg.power =", xp.powerflux
python ****.py
Traceback (most recent call last):
File "postprocess_3D_thread2.py", line 132, in <module>
print "xp.power =", xp.powerflux
AttributeError: 'surface' object has no attribute 'powerflux'
我试图在多处理下运行类方法run()它运行得很好并且run()方法多进程但我无法弄清楚如何从run()方法中取出self.powerflux到我的类属性!有人可以告诉我在类方法中如何进行多处理?我已经找了好几个星期,我真的很难过,在Google上找不到这个。 非常感谢, 菲尔
答案 0 :(得分:0)
从多个流程获取数据可能很尴尬 - 这是从the fine manual
执行此操作的一种方法import multiprocessing as mp
def calc(a, b, resultval):
resultval.value = a+b
def main():
num = mp.Value('d', 0.0)
p = mp.Process(target=calc, args=(1, 2, num))
p.start()
p.join()
print num.value
if __name__=='__main__':
main()
3.0