忽略实际的实用程序,我有以下类:
from multiprocessing import Manager
import threading
class MgrStaticTarget(object):
def __init__(self):
self._mgr = Manager()
self._thd = threading.Thread(target=self.async_targ)
@staticmethod
def async_targ():
pass
class MgrInstanceTarget(object):
def __init__(self):
self._mgr = Manager()
self._thd = threading.Thread(target=self.async_targ)
def async_targ(self):
pass
我观察的行为我不明白。在使用Python shell以下列方式重复实例化MgrInstanceTarget时:
i = MgrInstanceTarget()
i = MgrInstanceTarget()
i = MgrInstanceTarget()
i = MgrInstanceTarget()
multiprocessing.Manager服务器进程(或者至少是我认为它们来自的进程)正在累积。
但是,如果我以相同的方式实例化MgrStaticTarget,则服务器进程不会累积。唯一存在的进程是最新的Manager服务器进程和python shell。这里发生了什么?