0

I want to change the process name of the spawned multiprocessing's manager SyncManager using setproctitle, I tried extending 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()

But it doesn't seem to work. Any idea how to do it?

Gotenks
  • 367
  • 6
  • 14
  • Found out in the documentation of multiprocessing.managers.BaseManager which SyncManager is a subclass of: start([initializer[, initargs]]) Start a subprocess to start the manager. If initializer is not None then the subprocess will call initializer(*initargs) when it starts. – Gotenks May 30 '21 at 00:32

1 Answers1

1

I found the solution to my question.

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)
Gotenks
  • 367
  • 6
  • 14