python - 每个进程调用一次信号处理程序
问题描述
我有一个产生多个进程的程序,我用 Ctrl+C 杀死它。
在程序开始时,我捕获信号以执行一些清理操作。
def cleanup(*_):
# do cleanup operations here
# ...
exit(1)
# trap ctrl+c and hide the traceback message
signal(SIGINT, cleanup)
# spawn processes (pool of workers) and do work here
# ...
问题是cleanup
被多次调用(每个正在运行的进程一次)。
我怎样才能使它cleanup
只被调用一次?
解决方案
您的子进程正在从其父进程继承信号处理程序。如果您希望处理程序仅在一个进程中执行,您可能想在子进程中取消注册处理程序。
推荐阅读
- jquery - ajax加载后如何将tinymce重新绑定到textarea
- python-3.x - TypeError:“str”对象不支持删除项目
- azure-devops - azure devops 服务器:撤销域管理员用户的访问权限
- reactjs - 复杂状态下使用 Hook useReducer 的正确方法
- java - 如何在自定义比赛的 Pubg Mobile 中获取玩家击杀数?
- java - Java语言转换
- neo4j - Neo4j 管理员导入数据库在控制台中不可用
- python - 将图像大小调整为正方形
- r - 当用户在 R 中仅输入“输入”时,如何解决错误?
- flutter - 加载页面时清除列表