• 技术文章 >后端开发 >Python教程

    python多进程共享变量

    2016-06-10 15:05:24原创657
    本文实例为大家分享了python多进程共享变量的相关代码,供大家参考,具体内容如下

    from multiprocessing import Process, Manager
    import os
    import time
     
     
    class MulFun():
     
      def __init__(self):
        self.a = [1,2,3,4,5]
        self.b = 0
        self.c = {}
        self.s = "hello world"
        self.radius = Manager().dict()
        self.radius['a'] = self.a
        self.radius['b'] = self.b
        self.radius['c'] = self.c
        self.radius['s'] = self.s
     
     
      def func1(self):
        self.b = self.radius['b']
        for i in range(10):
          self.b += i
          self.radius['b'] = self.b
          time.sleep(0.5)
          print '1: ', self.radius['b'],':', self.radius['c'], os.getpid()
     
     
      def func2(self):
        self.c = self.radius['c']
        for i in ['ab', 'bc', 'cd', 'df', 'fg']:
          self.c[i] = i + i
          self.radius['c'] = self.c
          time.sleep(0.5)
          print '2:  ', self.radius['b'],':', self.radius['c'], os.getpid()
     
      def run(self):
        process1 = Process(target=self.func1, args=())
        process2 = Process(target=self.func2, args=())
        process1.daemon = True
        process2.daemon = True
        process1.start()
        process2.start()
        process1.join()
        process2.join()
     
     
    class MulSun1:
     
      def __init__(self, radius):
        self.radius = radius
        self.a = radius['a']
        self.s = radius['s']
     
      def process(self):
     
        for i, j in enumerate(self.a):
          #self.a[i] = j * 2
          #self.radius['a'] = self.a
          time.sleep(0.5)
          print '1: ', self.radius['a'], ' & ', self.radius['s']
     
     
    class MulSun2:
     
      def __init__(self, radius):
        self.radius = radius
        self.a = radius['a']
        self.s = radius['s']
     
      def process(self):
     
        for i in range(10):
          self.s = self.s + ':% s' %i
          if i < len(self.a):
            self.a[i] += i
          else:
            self.a.append(i + i)
          self.radius['s'] = self.s
          self.radius['a'] = self.a
          time.sleep(0.5)
          print '2: ', self.radius['a'], ' & ', self.radius['s']
     
    if __name__ == '__main__':
      aa = MulFun()
      s1 = MulSun1(aa.radius)
      s2 = MulSun2(aa.radius)
      process1 = Process(target=s1.process, args=())
      process2 = Process(target=s2.process, args=())
      process1.daemon = True
      process2.daemon = True
      process1.start()
      process2.start()
      process1.join()
      process2.join()
      print "------------------------"
      print 'process id:', os.getpid()
      print 'done'
      print aa.radius['a'], ' & ', aa.radius['s']

    以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:python中的错误处理 下一篇:python简单实现刷新智联简历
    php培训_php实战培训【立即报名】-php中文网第20期

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• Python实例详解pdfplumber读取PDF写入Excel• 归纳总结Python中的装饰器知识点• python中API调用的详解与示例• 手把手教你在Python使用plot()函数画图• 详细解析python正则表达式re模块
    1/1

    PHP中文网