首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >信号是由孩子处理的,而不是由父进程处理的?

信号是由孩子处理的,而不是由父进程处理的?
EN

Stack Overflow用户
提问于 2014-01-14 05:42:19
回答 1查看 520关注 0票数 0

我生成了几个multiprocessing.Processes来将工作负载分配到不同的进程上。现在,我希望能够通过按Ctrl来关闭整个程序,但是信号只发送给childs,而不是发送到父进程。

我的程序是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
import multiprocessing
import signal

# ignoring handler, signal.SIG_IGN is not working on windows
def sighandler(signal, frame):
    pass    

# worker thread definiton
def worker():
    signal.signal(signal.SIGINT, sighandler)
    signal.signal(signal.SIGTERM, sighandler)

    # do stuff here...

def main():
    num_procs = 4
    procs = []
    print("Starting up %d processes:" %num_procs)
    for i in range(num_procs):
        print("\tstarting worker %d..." %(i+1))
        p = multiprocessing.Process(target=worker)
        procs.append(p)
        p.start()

    print("All processes started...")
    try:
        for p in procs:
            p.join()
    except KeyboardInterrupt as e:
        print "STOPPING"

        for p in procs:
            p.terminate()

        sys.exit(0)

但是如果我按ctrl键,只会叫4次。当我在父进程中注册信号时,处理程序既不会被调用,KeyboardInterrupt异常也不会工作。我能从里面阻止孩子的进程吗?处理程序中的sys.exit(0)不适合我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-14 05:53:30

你试过使用os._exit(n)吗?

从医生那里:

退出状态为n的进程,而不调用清理处理程序、刷新stdio缓冲区等。 可用性: Unix,Windows。 注意,退出的标准方式是sys.exit(n)。通常,_exit()只应在子进程中使用,而不应在叉()之后使用。

exit

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21115028

复制
相关文章
遇到的各种时间类型:UTC时间、GMT时间、本地时间、Unix时间戳
GMT,即格林尼治标准时间,也就是世界时。GMT的正午是指当太阳横穿格林尼治子午线(本初子午线)时的时间。但由于地球自转不均匀不规则,导致GMT不精确,现在已经不再作为世界标准时间使用。
陈大剩博客
2023/02/17
3.4K0
遇到的各种时间类型:UTC时间、GMT时间、本地时间、Unix时间戳
在ASP中实现UNIX时间戳
  在康盛创想发布UC以后,我曾经尝试为其编写ASP把版本的客户端类库,过程中发现了几个问题,首当其冲的当然是服务器端不支持非php平台的接口,这个问题直接导致了我选择另起炉灶开发自己的通用用户中心。   但是在研究UC的过程中却也有一些细小的收获。这篇文章说说PHP中的时间戳。在PHP中,时间函数time()获得的不是我们在ASP中的事件函数Now()所返回的“2008-06-04 21:19:41”这样的形式,而是“1123495443”这样的形式。这个记录的是所表示的时间与1970年1月1日午夜零点之
小李刀刀
2018/03/02
3.2K0
Unix 时间戳;时间戳获取和生成
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
西湖醋鱼
2020/12/30
9.2K0
在线Unix时间戳转换,在编程语言中获取Unix时间戳:
在线Unix时间戳转换工具: https://oktools.net/timestamp 语言 秒 毫秒 JavaScript Math.round(new Date() / 1000) new Date().getTime() Java System.currentTimeMillis() / 1000 System.currentTimeMillis() Python int(time.time()) int(time.time() * 1000) Go time.Now().Unix() time.N
vivec
2019/08/20
4K0
java利用时间戳来获取UTC时间
由于项目原因,本人在做测试的时候发时间都是UTC时间,因此找了找解决方案,发现都是非常复杂,十几行代码实现此功能,其中主要都用在计算时间偏移量。我试了一下在calendar的getinstance方法参数修改并不能直接获取UTC时间,在尝试过之后终于找到一个简单的方法,通知data类直接获取时间戳,然后设置时间戳来达到转换时区的方法。分享代码,供大家参考。
FunTester
2020/04/03
2.8K0
python unix时间戳与正常时间转
   有时候业务需要,需要把正常的时间格式与unix时间戳格式进行转换。       在python中转化方式如下,直接利用time中的函数: #! /usr/bin/env python #coding:utf-8 import sys,os,re import time def timestamp_datatime(value): format = '%Y-%m-%d %H:%M' #format = '%Y-%m-%d %H:%M:%S' #value 为时间戳值,如:1
py3study
2020/01/06
2.7K0
移动直播转换Unix时间戳
腾讯视频云直播答题NTP时间同步方案是在推流 URL 之后添加 &txAddTimestamp=2 参数(之前的txAddTimestamp=1会在小程序上遭遇播放黑屏问题),由服务器在视频流每一帧打入一个带有国际标准时间(误差在 100ms 以内)的 SEI 时间戳。通过TXLiteAVSDK的 PLAY_EVT_GET_MESSAGE 消息事件获取的是一个8字节的64位时间戳。以下介绍了如何把这个8字节的64位时间戳转换成Unix时间戳。
腾讯视频云-Zachary
2019/09/07
2.3K0
移动直播转换Unix时间戳
Unix时间戳转换怎样在Excel批量修改?
  最近在操作项目的时候碰到一个Unix时间戳转换的问题。"date_time":1393031347这个是什么,你知道吗?如果你对Unix时间戳了解的话一眼就看出来。但我们本着科普的理念稍微介绍一下,大神请飘过。   看到date_time,我们第一反应就是日期时间,但是后面的一串数字什么意思天才晓得!我们是好学的孩子,不能做那么不负责的事情,不懂就找度娘,虽然度娘已经出走了。搜索了一下,大部分结果是说用不同编程语言进行datetime转换,比如java、perl、php等,虽然略知一二,但要写一个时间戳
ytkah
2018/03/05
3.1K0
Unix时间戳转换怎样在Excel批量修改?
【java系列】unix时间戳转Date[通俗易懂]
注意,不能直接使用Integer进行乘除和转换,需要转成bigDecimal去处理,否则转换出来的时间只会是1970-xxxx
全栈程序员站长
2022/09/07
2.7K0
Python获得13位unix时间戳
Python中的time模块把datetime时间转换为10位的时间戳,之前有记录过转换的方法。而今天调用的API中需要的是13位(一般Java里默认是13位(milliseconds,毫秒级的)。下面是我今天找到的方法,记录一下。 获取10位UNIX时间戳 #导入time模块 In [1]: import time   # 获取unix时间戳,并赋值给unix_Timestamp In [2]: unix_Timestamp = time.time()   #打印结果 In [3]: print unix
行 者
2018/03/26
2.8K0
utc时间戳转换器_java时间转字符串
1、String utcStr = “Thu Aug 14 16:45:37 UTC 2011”;
全栈程序员站长
2022/11/09
2.1K0
UNIX时间戳和北京时间的相互转换
准确的说,应该是unix时间戳,是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。在很多API接口中,数据的更新时间并不是一个字符串,而是一个长整形数据,如1593003485,表示是北京时间2020-06-24 20:58:05。
单片机点灯小能手
2020/07/17
11.3K1
UNIX时间戳和北京时间的相互转换
python正常时间和unix时间戳时间的相互转换代码
这段代码可以用来转换常规时间格式为unix时间戳,也可以将unix时间戳转换回来 # -- coding: utf-8 -- import time def timestamp_datetime(value): format = '%Y-%m-%d %H:%M:%S' # value为传入的值为时间戳(整形),如:1332888820 value = time.localtime(value) ## 经过localtime转换后变成 ## time.struct_time(tm_year=2012
用户8983410
2021/11/02
1.7K0
python正常时间和unix时间戳时间的相互转换代码
这段代码可以用来转换常规时间格式为unix时间戳,也可以将unix时间戳转换回来 # -- coding: utf-8 -- import time def timestamp_datetime(value): format = '%Y-%m-%d %H:%M:%S' # value为传入的值为时间戳(整形),如:1332888820 value = time.localtime(value) ## 经过localtime转换后变成 ## time.struct_time(tm_year=2012
用户7999227
2021/11/02
1.3K0
时间戳 时间
背景 由于团队业务做的是国际项目,就无法避免一个问题--时区问题,很多业务都是跟时间有关。一些时间的对比,时间的展示,都会涉及到时区和时间戳,所以花点时间来简单总结一下 概念 时间戳 时间戳是一个自增的整数,它表示从1970年1月1日零时整的GMT时区开始的那一刻,到现在的毫秒数。假设浏览器所在电脑的时间是准确的,那么世界上无论哪个时区的电脑,它们此刻产生的时间戳数字都是一样的,所以,时间戳可以精确地表示一个时刻,并且与时区无关。 时区 时区(Time Zone)是地球上的区域使用同一个时间定义。188
千往
2018/01/24
5.8K0
时间,时间戳
将如上的时间2016-05-05 20:28:54转换成时间戳,具体的操作过程为:
zhengzongwei
2019/07/31
5.1K0
谷歌浏览器WebKit/Chrome时间戳与普通Unix时间戳互转 - 带Python/PHP实现
WebKit时间戳:从1601年1月1日(UTC/GMT的午夜)开始所经过的微秒数 Unix时间戳:从1970年1月1日(UTC/GMT的午夜)开始所经过的秒/毫秒数
kr
2023/01/30
8.3K0
Python获取当前时间戳_时间转换时间戳
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
9.6K0
Docker 中修改本地时间UTC
今天做在docker中发布了一个服务,需要用到计划任务,但是发现docker环境中本地时间为UTC,导致本地时间跟正常时间差了8个小时,以下放出如何修改Docker中的本地时间
BigYoung小站
2020/05/04
2.5K0
点击加载更多

相似问题

在Lua中获取UTC UNIX时间戳

314

在Unix中显示时间戳时间,在Android中显示UTC时间

20

Unix时间戳具有UTC差异

23

UTC时间戳字符串到UNIX时间戳

17

转换时间戳(UTC?)到使用JQuery的UNIX时间戳

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文