title: python multiprocessing BaseManager registered class lost connection immediately after Ctrl-C
body: <p>I am experiencing some issues that I suspect is a limitation of my python program to handle correctly, my program is not been able to call methods of a registered class of BaseManager immediately after I hit Ctrl-C, even other process implemented as classes that inherit from multiprocessing.Process are affected. I have some methods that I would like to call from process  that don't execute correctly after Ctrl-C.</p>
  
  <p>For example the following code is not able to call the mt instance of TestClass after Ctrl-C. </p>
  
  <pre><code>from multiprocessing.managers import BaseManager, NamespaceProxy
  import time
  
  class TestClass(object):
      def __init__(self, a):
          self.a = a
  
      def b(self):
          print self.a
  
  class MyManager(BaseManager): pass
  
  class TestProxy(NamespaceProxy):
      # We need to expose the same __dunder__ methods as NamespaceProxy,
      # in addition to the b method.
      _exposed_ = ('__getattribute__', '__setattr__', '__delattr__', 'b')
  
      def b(self):
          callmethod = object.__getattribute__(self, '_callmethod')
          return callmethod('b')
  
  MyManager.register('TestClass', TestClass, TestProxy)
  
  if __name__ == '__main__':
      manager = MyManager()
      manager.start()
      t = TestClass(1)
      print t.a
      mt = manager.TestClass(2)
      print mt.a
      mt.a = 5
      mt.b()
  
      try:
          while 1:
              pass
      except (KeyboardInterrupt, SystemExit):
          time.sleep(0.1)
          mt.a = 7
          mt.b()
          print "bye"
          pass
  
  Here is the console output
  
  1
  2
  5
  ^CTraceback (most recent call last):
    File "testManager.py", line 38, in &lt;module&gt;
      mt.a = 7
    File "/usr/lib/python2.7/multiprocessing/managers.py", line 1028, in __setattr__
      return callmethod('__setattr__', (key, value))
    File "/usr/lib/python2.7/multiprocessing/managers.py", line 758, in _callmethod
      conn.send((self._id, methodname, args, kwds))
  IOError: [Errno 32] Broken pipe
  </code></pre>
  
  <p>Do you have any suggestion? Is there any workaround or something wrong in my code?</p>
  
  <p>Thanks in advance.</p>