在python中覆盖多处理 [英] override multiprocessing in python

查看:89
本文介绍了在python中覆盖多处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何在类中获取变量,该类在python中重写多处理:

how can i get variable in class which is override multiprocessing in python:

#!/usr/bin/env python

import multiprocessing
import os

class TestMultiprocess(multiprocessing.Process):
    def __init__(self):
        multiprocessing.Process.__init__(self)
        self.myvar = ''

    def myfunc(self):
        return os.getpid() 

    def run(self):
        self.myvar = self.myfunc()

mlist = []
for i in range(10):
    t = TestMultiprocess()
    mlist.append(t)
    t.start()

for j in mlist:
    t.join()
    print t.myvar

我无法从类TestMultiprocess中获取值"myvar",我只是一片空白.但是我已经覆盖了Process的run()函数.

i can not get value "myvar" from class TestMultiprocess, i just get blank. But i already override the run() function from Process.

对不起,如果我的拼写很不好...

sorry if my spell very bad ...

推荐答案

run()将在单独的进程中执行;进程通常不共享内存.但是,通过明确的值班级:

The run() will executed in a separate process; processes don't share memory, normally. multiprocessing does support shared variables, though, through the explicit Value class:

#!/usr/bin/env python

import multiprocessing
import os

class TestMultiprocess(multiprocessing.Process):
    def __init__(self):
        multiprocessing.Process.__init__(self)
        self.myvar = multiprocessing.Value('i',0)

    def myfunc(self):
        return os.getpid()

    def run(self):
        self.myvar.value = self.myfunc()

mlist = []
for i in range(10):
    t = TestMultiprocess()
    mlist.append(t)
    t.start()

for j in mlist:
    j.join()
    print j.myvar.value

这篇关于在python中覆盖多处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆