A classe registrada BaseManager do multiprocessamento python perdeu a conexão imediatamente após Ctrl-C

Estou enfrentando alguns problemas que, suspeito, são uma limitação do meu programa python para lidar corretamente, meu programa não conseguiu chamar métodos de uma classe registrada de BaseManager imediatamente após pressionar Ctrl-C, até mesmo outros processos implementados como classes que herdam do multiprocessing.Process são afetados. Eu tenho alguns métodos que gostaria de chamar do processo que não são executados corretamente após Ctrl-C.

Por exemplo, o código a seguir não pode chamar a instância mt de TestClass após Ctrl-C.

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 <module>
    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

Você tem alguma sugestão? Existe alguma solução alternativa ou algo errado no meu código?

Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion