Python中文
首页
教程
问答
标签
搜索
登录
注册
在Python3中使用SIGTERM时,允许进程完成而不是中断
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在开发一些代码,当在unix中从命令行发送sigterm信号时,需要优雅地关闭这些代码。我发现这个例子<a href="https://stackoverflow.com/a/31464349/7019148">https://stackoverflow.com/a/31464349/7019148</a>很好用,但是有一个问题。在</p> <p>代码:</p> <pre><code>import signal import time class GracefulKiller: def __init__(self): signal.signal(signal.SIGTERM, self.exit_gracefully) self.kill_now = False def exit_gracefully(self, signum, frame): self.kill_now = True def run_something(self): print("starting") time.sleep(5) print("ending") if __name__ == '__main__': killer = GracefulKiller() print(os.getpid()) while True: killer.run_something() if killer.kill_now: break print("End of the program. I was killed gracefully :)") </code></pre> <p>当您传递kill命令<code>kill -15 <pid></code>时,run\u something方法会被中断,进程也会被优雅地终止。<strong>但是,有没有一种方法可以让run_something方法在进程被终止之前完成?</strong>即防止中断?在</p> <p>期望输出:</p> ^{pr2}$ <p><em>我的用例是这将变成一个下载脚本,如果我想终止进程,我希望进程在终止之前完成下载。。。</em></p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>答案在原来的问题里。我只是把这个留给未来的谷歌搜索者。在</p> <p>我一开始就没有问题,我的终端只是在<code>kill</code>命令后打印“ending”时出现问题。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
在python3中使用Scipy pearsonr函数
10 回答
在Python3中使用scipy对多个lorentzian进行数据拟合
6 回答
在Python3中使用Script=argv
10 回答
在python3中使用selenium webdriver进行未解析的回溯
4 回答
在python3中使用selenium和phantomjs的网页截图之前如何等待?
8 回答
在Python3中使用Selenium和Requests模块从网页获取文件
6 回答
在python3中使用SIGINT终止函数
7 回答
在Python3中使用SIGTERM时,允许进程完成而不是中断
6 回答
在python3中使用smtplib发送XML内容
4 回答
在python3中使用socket库(RFCOMM模式)重新连接蓝牙设备?
5 回答
在python3中使用sounddevice和numpy编写wav文件
1 回答
在python3中使用Sqlalchemy插入MySQL查找类型错误的原因
2 回答
在python3中使用sqlite、pandas和sqlalchemy很难让rollback工作
6 回答
在python3中使用SQLite的FTS3/4
2 回答
在Python3中使用struct.calcsize()和len()有区别吗?
9 回答
在python3中使用substring函数时发生TypeError
9 回答
在Python3中使用Tkinter entry小部件写入串行设备
2 回答
在python3中使用tkinter时,如何在每次按下函数时获得运行该函数的按钮?
6 回答
在python3中使用tkinter的子帧
2 回答
在Python3中使用tryexcept块时,如何避免使用未初始化的变量?
10 回答