我正在尝试向server.py添加bool kill_manager,这将允许我从client.py更改其值并导致server.py退出。我希望能够将server.py启动到在后台运行的独立终端,并且仍然能够远程关闭它。当前,这两个程序在同一台计算机上运行,但是server.py可能会在以后的树莓派上运行。
我为server.py和client.py提供了一个简单的示例,我相信它应该具有此功能。可以看出,client.py可以将kill_manager的值更改为True,但是server.py从不更新其值,因此该程序从不关闭。
我不知道为什么client.py设置kill_manager = True后server.py无法关闭。 server.py和client.py可以访问两个不同的kill_manager变量吗?
server.py
from multiprocessing.managers import SyncManager
class myManager(SyncManager):
pass
kill_manager = False
def kill_manager_bool():
return kill_manager
if __name__ == "__main__":
myManager.register("kill_manager_bool", kill_manager_bool)
manager = myManager(("127.0.0.1", 5001), authkey=b"password")
manager.start()
while True:
if kill_manager:
print('killing manager')
manager.shutdown()
exit()
client.py
from multiprocessing.managers import SyncManager
from time import sleep
class myManager(SyncManager):
pass
if __name__ == "__main__":
myManager.register("kill_manager_bool")
manager = myManager(("127.0.0.1", 5001), authkey=b"password")
manager.connect()
kill_manager = manager.kill_manager_bool()
sleep(1)
print(kill_manager)
kill_manager = True
print(kill_manager)