title: Using the multiprocessing module
body: <p>I'm trying to use the multiprocessing module in python 2.6, but apparently there is something I do not understand. I would expect the class below to add up the numbers sent to it by add() and return the sum in the get_result() method. The code below prints "0", I'd like it to print "2". What have I missed?</p>
  
  <pre><code>import multiprocessing
  
  class AdderProcess(multiprocessing.Process):
  
      def __init__(self):
          multiprocessing.Process.__init__(self)
          self.sum = 0
          self.queue = multiprocessing.JoinableQueue(5)
          self.daemon = True
          self.start()
  
      def run(self):
          while True:
              number = self.queue.get()
              self.sum += number
              self.queue.task_done()
  
      def add(self, number):
          self.queue.put(number)
  
      def get_result(self):
          self.queue.join()
          return self.sum
  
  
  p = AdderProcess()
  p.add(1)
  p.add(1)
  print p.get_result()
  </code></pre>
  
  <p><strong>PS. This problem has been solved.</strong> Thanks for the answers! Just to make it easier for any readers, here's the complete working version:</p>
  
  <pre><code>import multiprocessing
  
  class AdderProcess(multiprocessing.Process):
  
      def __init__(self):
          multiprocessing.Process.__init__(self)
          self.sum = multiprocessing.Value('d', 0.0)
          self.queue = multiprocessing.JoinableQueue(5)
          self.daemon = True
          self.start()
  
      def run(self):
          while True:
              number = self.queue.get()
              self.sum.value += number
              self.queue.task_done()
  
      def add(self, number):
          self.queue.put(number)
  
      def get_result(self):
          self.queue.join()
          return self.sum.value
  
  p = AdderProcess()
  p.add(1)
  p.add(1)
  print p.get_result()
  </code></pre>