【问题标题】:Terminate python application waiting on semaphore终止等待信号量的python应用程序
【发布时间】:2012-09-12 06:19:31
【问题描述】:

我想知道为什么python2.7在按下ctrl+c时不放弃阻塞操作,我无法杀死我的线程应用程序,有几个套接字等待,信号量等待等等。在 python3 中, ctrl+c 丢弃了所有阻塞操作并垃圾收集了所有内容,释放了所有套接字等等......是否有(我相信有,我只是还不知道如何)一种方法来完成这个?信号手柄?谢谢大家

【问题讨论】:

    标签: python multithreading python-2.7 exit kill


    【解决方案1】:

    我猜你正在启动线程,然后主线程正在等待在终止时加入它们。

    您应该在主线程中捕获由 Ctrl-C 生成的异常,以便通知生成的线程终止(例如,更改每个线程中的标志)。这样,所有子线程将终止,主线程将完成连接调用,到达主线程的底部。

    【讨论】:

    • 其实我试过了,应用程序仍然在阻塞 read() 方法时被冻结,要走的路是设置 daemon=True,无论如何谢谢
    • 请注意,对于守护线程,守护线程很有可能在 Python 运行时开始其自己的拆卸过程后仍然可以执行。因此,如果您在关机时发现奇怪的异常,可能是因为此设置。
    • 关于你的读取功能,如果你用 select 将它包装在一个由“end”标志控制的循环中,你最终会得到一个非阻塞读取。
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    相关资源
    最近更新 更多