类方法中的Python多处理

时间:2014-10-04 04:23:17

标签: python class multiprocessing

我试图使用多处理来运行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上找不到这个。 非常感谢, 菲尔

1 个答案:

答案 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