【问题标题】:Change the spawned process name for Python multiprocessing manager更改 Python 多处理管理器的衍生进程名称
【发布时间】:2021-08-17 15:26:35
【问题描述】:

我想使用 setproctitle 更改生成的多处理管理器 SyncManager 的进程名称,我尝试扩展 multiprocessing.managers.SyncManager:

class MySyncManager(multiprocessing.managers.SyncManager):
    def __init__(self):
        super(MySyncManager, self).__init__()
        self.daemon=True

    def run(self):
        setproctitle.setproctitle('MySyncManager')
        super(MySyncManager, self).run()


if __name__ == '__main__':
    mySyncManager = MySyncManager()
    mySyncManager.start()

但它似乎不起作用。知道怎么做吗?

【问题讨论】:

  • 在 multiprocessing.managers.BaseManager 的文档中发现 SyncManager 是其子类: start([initializer[, initargs]]) 启动一个子进程来启动管理器。如果 initializer 不是 None 那么子进程将在启动时调用 initializer(*initargs)。

标签: python python-multiprocessing multiprocessing-manager


【解决方案1】:

我找到了问题的解决方案。

def changeProcessTitle(title):
    from setproctitle import setproctitle
    setproctitle(title)

class MySyncManager(multiprocessing.managers.SyncManager):
    def __init__(self):
        super(MySyncManager, self).__init__()
        self.daemon=True

if __name__ == '__main__':
    mySyncManager = MySyncManager()
    initArgs = ('MySyncManager', )
    mySyncManager.start(changeProcessTitle, initArgs)

【讨论】: