gpt4 book ai didi

python - 如果所有 child 都停止并阻止其他 child 产生,则终止/重新启动 python 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:06 25 4
gpt4 key购买 nike

我有一个套接字服务器,它使用线程为每个连接的客户端打开一个线程。我还有另外两个不断运行的线程正在执行维护操作。

基本上有主线程加上两个不断运行的子线程,每个连接的客户端加上一个子线程。

我希望能够安全地终止或重新启动。

我希望能够以某种方式触发终止函数,指示所有子进程安全终止,然后父进程可以退出。

有什么想法吗?

请不要建议作为客户端连接并发送会触发它的命令。已经想到了。

我正在寻找一种通过在控制台中执行某些操作来执行此操作的方法。

python 套接字服务器作为系统服务运行,并希望在 init 脚本中实现终止。

最佳答案

最好的方法是在你的主线程中设置一个信号处理程序。这可以使用 signal 模块来完成。请参阅:http://docs.python.org/library/signal.html .一个好的方法是捕获 CTRL-C 信号 (SIGINT)。

请注意,信号处理程序也可以是类方法,因此您不必使用全局方法(我花了一段时间才发现这一点)。

 def __init__(self):
signal.signal(signal.SIGINT, self.just_kill_me)

def just_kill_me(self, sig, frame):
self.stopped = True
for t in self.threads:
t.join()

不可能向线程发送相当于终止信号的信号。相反,您应该设置一个标志,向 children 发出停止的信号。

您的子线程应该循环运行,定期检查父线程是否请求它们停止。

while not parent.stopped:
do_some_maintenance_work

关于python - 如果所有 child 都停止并阻止其他 child 产生,则终止/重新启动 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com