python捕获信号退出_Python捕获信号退出Python中的捕获Ctrl+C/SIGINT,优雅地退出多个进程,python,在,CtrlCSIGINT,并...
用multiprocessing.Pool处理Ctrl+C/SIGINT的正确方法是:在创建进程Pool之前,使进程忽略SIGINT。这样创建的子进程继承SIGINT处理程序。
创建Pool之后,还原父进程中的原始SIGINT处理程序。
使用map_async和apply_async而不是阻塞map和apply。
等待超时的结果,因为默认的阻塞等待忽略所有信号。这是Python错误https://bugs.python.org/issue8296。
总而言之:#!/bin/env python
from __future__ import print_function
import multiprocessing
import os
import signal
import time
def run_worker(delay):
print("In a worker process", os.getpid())
time.sleep(delay)
def main():
print("Initializng 2 workers")
original_sigint_handler = signal.signal(signal.SIGINT, signal.SIG_IGN)
pool = multiprocessing.Pool(2)
signal.signal(signal.SIGINT, original_sigint_handler)
try:
print("Starting 2 jobs of 5 seconds each")
res = pool.map_async(run_worker, [5, 5])
print("Waiting for results")
res.get(60) # Without the timeout this blocking call ignores all signals.
except KeyboardInterrupt:
print("Caught KeyboardInterrupt, terminating workers")
pool.terminate()
else:
print("Normal termination")
pool.close()
pool.join()
if __name__ == "__main__":
main()
正如@YakovShklarov所指出的,从忽略信号到在父进程中忽略它之间有一段时间,在此期间信号可能会丢失。使用pthread_sigmask代替在父进程中临时阻止信号的传递将防止信号丢失,但是,在Python-2中不可用。
python捕获信号退出_Python捕获信号退出Python中的捕获Ctrl+C/SIGINT,优雅地退出多个进程,python,在,CtrlCSIGINT,并...相关推荐
- qt如何捕获应用程序输出_企业应用程序中需要捕获的5大Java性能指标
qt如何捕获应用程序输出 有兴趣了解如何使用AppDynamics捕获这些Java性能指标吗? 立即开始免费试用 ! 前几篇文章介绍了应用程序性能管理(APM),并指出了有效实施APM战略的挑战. 本 ...
- python 数据框缺失值_Python:处理数据框中的缺失值
python 数据框缺失值 介绍 (Introduction) In the last article we went through on how to find the missing value ...
- python配置文件密码管理_python – 可以在django管理员中实现“下次登录时更改密码”类型功能吗?...
我其实正在这样做的过程中.您需要三个组件:用户配置文件(如果您的站点上尚未使用),中间件组件和pre_save信号. 我的代码是在一个名为"帐户"的应用程序. # myprojec ...
- python图片目标检测_python+opencv实现目标检测中图片怎么插入
匿名用户 1级 2018-04-17 回答 考虑的是"背景帧"与其它帧之间的差异 这种方法检测结果还是挺不错的,但是需要提前设置背景帧,如果是在室外,光线的变化就会引起误检测,还是 ...
- python list 删除元素_Python的list循环遍历中,删除数据的正确方法
初学Python,遇到过这样的问题,在遍历list的时候,删除符合条件的数据,可是总是报异常,代码如下: num_list = [1, 2, 3, 4, 5]print(num_list)for i ...
- python正则匹配数字_python 正则匹配字母数字中的任意数字,字母
原博文 2018-08-08 21:31 − ([1-9]\d*.\d*|0.\d*[1-9]\d*) (.*$) 字符串为:6.12 ounces... 相关推荐 2019-09-28 21:13 ...
- python requests超时时间_python - requests 库 使用过程中timeout值最大可设值?
问 题 请问 requests 库 使用过程中timeout错误的默认时间是多长呢? 查看源码 理论上 timeout值可以任意设? 默认 timeout 值 是怎么来的呢? 如果我想设一个比较大的t ...
- python pip在哪里_Python 2.7.9(Linux)中的pip在哪里
我意识到这个问题可能真的很愚蠢,但我不能为我的生活找出安装python 2.7.9时我能找到pip的地方.我知道pip捆绑在这个版本及以上版本中,但我仍然无法找到它.我没有常规的写权限,也没有包管理器 ...
- python访问网页变量_Python 如何访问外围作用域中的变量
在表达式中引用变量时,Python 会按照如下的顺序遍历各个作用域,寻找该变量: 当前函数作用域 任何外围作用域(比如包含当前函数的其他函数) global 作用域,即代码所在的模块的作用域 如果上述 ...
- python生成shell脚本_Python设置在shell脚本中自动补全功能的方法
本篇博客将会简短的介绍,如何在ubuntu中设置python自动补全功能. 需求:由于python中的内建函数较多,我们在百纳乘时,可能记不清函数的名字,同时自动补全功能,加快了我们开发的效率. 方法 ...
最新文章
- 一个好用的C++的json库
- 第一次亲密接触vim编辑器
- SAP 盘盈盘亏移动类型701702 Vs 711712
- matlab GM(2,1)模型
- DPDK pmd驱动初始化(十九)
- python好不好用_但python以前不太好用
- 生产系统遇到的问题:producers blocked
- SAP CRM One Order header数据库表几个和时间戳相关的字段
- FIR仿真module_04
- linux之tail 命令
- 软件开发:到底谁还在传言软件巨头濒临死亡?
- 一行代码视频下载,so easy!
- java计算机毕业设计红色主题旅游网站源码+mysql数据库+系统+lw文档+部署
- 设计模式--代理模式--深入理解动态代理
- 编译原理逆波兰式实验java_逆波兰式算法的编译原理实验过程.doc
- CATIA软件VBA二次开发:Excel文件中点坐标数据导入与生成点应用程序编写
- python错误:TypeError: Cannot interpret ‘3‘ as a data type
- asr语音识别入门材料
- PowerBI中的函数日期表
- 中国新零售行业运营效益与创新发展模式咨询报告2022版
热门文章
- 微型计算机主机箱内的所有部件均由大规模,2012年自考《计算机应用基础》模拟试题...
- redhat5.4 安装mysql_Linux redhat 5.4上安装MYDNS
- 本科计算机专业在车辆段,机电与轨道车辆工程系2021届毕业生参加成都铁路局车辆段及电务段认知实习...
- gta5显示nat较为严格_一年内上涨近3000元/㎡!碧桂园翡翠华府物业管理严格到令人惊叹...
- java实现简单二叉树
- unbuntu cmake安装mysql_ubuntu下编译安装mysql5.5
- 计算机mips是什么,在计算机术语中,什么叫MIPS
- php mysql group by_php – 如何在mysql查询中解决“不在GROUP BY中”错误
- Linux统一编程接口,restful接口设计规范总结
- Gensee SDK RoleType详解