Heim  >  Artikel  >  Backend-Entwicklung  >  python多进程共享变量

python多进程共享变量

WBOY
WBOYOriginal
2016-06-10 15:05:241299Durchsuche

本文实例为大家分享了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程序设计有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:python中的错误处理Nächster Artikel:python简单实现刷新智联简历