为了账号安全,请及时绑定邮箱和手机立即绑定

python多线程中 接收到Ctrl+C后 怎么结束正处于阻塞状态的子线程

python多线程中 接收到Ctrl+C后 怎么结束正处于阻塞状态的子线程

米脂 2019-05-11 09:40:15
在python多线程中,只有主线程能接收到信号,而且不能使用join阻塞,那么主线程接收到信号后怎么结束正在阻塞状态中的子线程呢如下代码子线程receive_task1正阻塞在os.read()(接收串口数据,串口没有收到数据)函数中,有没有什么办法让os.read()函数退出呢?如果在主线程中使用os.read(),默认情况可以使用Ctrl+C打断,现在这种情况如何做最佳?importosimportsignalimportthreadingimporttimedeftest(signum,frame):print("\nreceivedsig%d"%(signum))print("howtomakeos.read(...)inrcv_task1threadstop?")print("exceptusesys.exit(1)")defreceive_task1():fd=os.open("/dev/ttyUSB1",os.O_RDWR)os.read(fd,10)print("receivethreadend")signal.signal(signal.SIGINT,test)rcv_task1=threading.Thread(target=receive_task1)rcv_task1.setDaemon(True)rcv_task1.start()while(1):time.sleep(1)
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 1204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号