我正在做一个编程项目——用Python编写一个基本的P2P文件共享应用程序。我使用两个线程:一个主线程调用select并等待来自套接字列表的输入系统标准(接收键入的命令)和一个助手线程,从队列中获取状态更新消息并打印它们。(这是唯一能打印任何东西的东西)

我还需要捕捉标准SIGINT并处理它以优雅地退出。我有一个quit方法可以做到这一点;输入'quit'作为命令就可以了。所以在主线程中,我尝试将这个方法设置为SIGINT的处理程序。据我所知,进程捕捉到信号并调用quit方法。helper线程打印一条消息,确认它正在退出。但是,我从主线程收到以下错误消息:Traceback (most recent call last):

File "peer.py", line 226, in

main()

File "peer.py", line 223, in main

p.run()

File "peer.py", line 160, in run

readables, writables, exceptions = select(self.sockets, [], [])

select.error: (4, 'Interrupted system call')

之后程序仍然退出。而在没有信号处理程序的情况下,发送一个SIGINT会得到以下结果:

^{pr2}$

无法终止程序;我必须停止并终止它。这是令人困惑的,因为SIGINT似乎只在被我的自定义方法捕获时才中断select调用。(它只在打印队列上放置一条消息并设置一个“done”变量)有人知道这是怎么发生的吗?同时使用信号处理程序和线程是不是一个坏主意?在

python 程序中断_有趣的Python处理程序中断信号相关推荐

  1. 有趣的超短python代码_有趣的python精短程序

    python可以简单优美,也很有趣,下面是收集的例子: 1.一句话开始一个http的文件服务器: $ python -m SimpleHTTPServer Serving HTTP on 0.0.0. ...

  2. python turtle 绘图速度用函数会快吗_有趣的Python turtle绘图

    专 题 Feature Story 16 \ China Science & Technology Education 文 _ 毛京宇/北京师范大学第三附属中学 魏云靖/北京市师达中学 有趣的 ...

  3. python编有趣的小程序_有趣的python小程序

    有趣的python小程序 1.密码生成器x=int(input()) print(''.join(__import__('random').choice('QWERTYUIOPASDFGHJKLZXC ...

  4. python 默认参数_有趣的 Python 特性 3 | 当心默认可变参数这个大猪蹄子。

    本文字数:1575 字 阅读本文大概需要:4 分钟 写在之前 Python 提供了很多让使用者觉得舒服至极的功能特性,但是随着不断的深入学习和使用 Python,我发现其中存在着许多玄学的输出与之前预 ...

  5. 学习python课程_想学习Python吗? 这是我们的免费4小时互动课程

    学习python课程 Python is a popular, versatile and easy-to-learn language. It's the go-to language for AI ...

  6. 2018年python薪资_最好的Python:2017和2018年至今我最喜欢的文章集

    2018年python薪资 我打算发布此收藏集 (My intention with publishing this collection) Last year I only used Medium ...

  7. python股市_如何使用python和破折号创建仪表板来主导股市

    python股市 始终关注大局 (Keep Your Eyes on the Big Picture) I've been fascinated with the stock market since ...

  8. python 切片_全面解读Python高级特性切片

    大家好,欢迎来到Crossin的编程教室! 众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组-)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slic ...

  9. python书籍_最好的Python书籍,让您像专业程序员一样编程

    Python是一种值得学习的语言.学习Python不仅会激发你用最简单的方式完成高度复杂的任务,还会打破传统编程范型的藩篱.Python是能够改变你的编程方式进而改变你看问题的角度的一种语言. Pyt ...

最新文章

  1. s时钟画布 android,Android UI编程进阶——使用SurfaceViewt和Canvas实现动态时钟
  2. 必要商城高级UED经理张不写:设计师如何规划职业方向
  3. 作业6--四则运算APP之Sprint计划
  4. 【小型JavaFx项目】英汉词典
  5. python从入门到精通pdf-跟老齐学Python:从入门到精通 完整版PDF[7MB]
  6. 基于map函数生成星战片头动画
  7. 推荐一套linux视频-----很棒
  8. 将mp3格式的音频转换为采样率8k的wav
  9. 黄山学院计算机专业考研情况,为什么考入北大的研究生偏偏来自黄山学院这样的学校?...
  10. 什么是Saas,以及什么是PLG下的Saas
  11. Android自定义半圆进度条 半圆渐变色进度条带指示 半圆开口大小可自由修改
  12. NGINX中如何根据客户端IP地址控制访问
  13. 均方根与峭度系数_调节阀流量系数的影响因素及其工程应用调节阀流量系数的影响...
  14. 数据版“吐槽大会”: 国产综艺节目年终盘点
  15. SimpleITK读取医学影像文件
  16. python中如何移动图形工作站_Schrodinger分子动力模拟与建模工作站配置推荐
  17. 提取微信记录为csv文件或txt文件(免root,免安装java)
  18. Windows文件系统中文件的储存原理、文件粉碎机的原理、数据恢复的原理
  19. 与Qt结合使用的3D引擎
  20. Project 2010 概述

热门文章

  1. Flutter Dart 安装在window系统
  2. WPF Calendar 日历控件 样式自定义
  3. 【WPF】屏幕右下角消息提示框
  4. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2- “Tab”标签新增可“最大化”显示功能...
  5. js获取url中的参数值
  6. 在桌面应用程序与Web应用程序之间该如何选择
  7. 对Ubuntu操作系统进行彻底优化
  8. 每日一程-10.五种基本随机数测试-续
  9. 关于数位动规(入门到进阶,难度中档)
  10. vue-cli  自动切换环境