我想使用python Multiprocessing SyncManager与父进程和子进程通信。在父进程中,我以这种方式创建管理器:
class JobQueueManager(SyncManager):
pass
JobQueueManager.register('get_job_q', callable=lambda: job_q)
JobQueueManager.register('get_result_q', callable=lambda: result_q)
...
manager = JobQueueManager(address=('127.0.0.1', port), authkey=authkey)
manager.start()
print 'Server started at port %s' % port
return manager
在孩子身上:
manager = ServerQueueManager(address=(ip, port), authkey=authkey)
manager.connect()
但是当我用Subprocess('child.py')函数启动它时,子进程中的manager.connect()会挂起。当我从Linux CLI运行子进程时,它们是完美的。
从CLI,Subprocess方法或Process(target = f,args =('bob',))函数运行进程以及何时使用SyncManager时有什么区别?