python手动中断多线程程序方法详解

本文探讨了Python中如何手动中断多线程程序,通过实例展示了Python2和Python3在处理中断上的差异,并提出了设置子线程为daemon线程结合isAlive()模拟join的解决方案。
摘要由CSDN通过智能技术生成
本文和大家分享的主要是Python手动中断多线程程序相关内容,一起来看看吧,希望对大家 学习python 有所帮助。
  引
  灵感来源依旧是爬虫框架项目 pycrawler ,爬虫作为子线程运行时不受键盘中断信号影响,Ctrl-C无法终止整个爬虫运行。另外的一个场景是多线程压力测试,需要提前终止的情况下,Ctrl-C依旧不能终止整个程序。除了简单粗暴的使用kill命令强行终止之外,本文将给出一个简单可行的解决方案。
  值得注意的一点是,Python2、3两个版本在测试中的表现并不一致,所以使用两个版本分别进行测试。
  博客原文
  测试环境
  · Python2 2.7.9
  · Python3 3.4.2
  · Mac OS X Yosemite 10.10.3
  子线程类
  import timefrom threading import Thread
  class CountDown(Thread):
  def __init__(self):
  super(CountDown, self).__init__()
  def run(self):
  num = 100
  print('slave start')
  for i in range(10, 0, -1):
  print('Num: {0}'.format(num/i))
  time.sleep(1)
  print('slave end')
  失败情况一
  主线程代码
  if __name__ == '__main__':
  print('main start')
  CountDown().start()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值