Python的threading类没有提供退出方法,退出方法需要自己实现.

这涉及到两个问题:

线程通信:子线程怎么知道父线程让子线程退出.

退出的实现:子线程知道之后该怎么退出

线程通信

threading提供了Event这个类,实际上这个类就是一个信号,可以比较方便的实现线程间通信.因为多线程运行在一个进程中,也可以自己定义一个类来传递信号.略过不表.

# coding:utf-8

import threading

import time

signal = threading.Event() # 定义一个信号

def worker(signal, *args, **kwargs):

"""子线程核心函数

Arguments:

signal {threading.Event} -- 接收的信号

"""

# 如果信号为False,则执行任务

while not signal.isSet():

# 执行工作

print("working")

time.sleep(1)

print("exiting")

# 信号为True时,退出子线程

exit()

t = threading.Thread(target=worker, args=(signal,))

t.start()

time.sleep(2)

print(u"发送退出信号")

signal.set()

time.sleep(1.5)

print(u"当前子线程的状态为{}".format(t.isAlive()))

time.sleep(1)

输出

working

working

发送退出信号

exiting

当前子线程的状态为False

在子线程内部调用exit(),是退出子线程而不是退出主线程,调用位置的问题.

退出线程

退出线程有很多办法,不过核心就是判断信号的状态.这就需要在worker流程控制中加好判断点位.要明确退出不是指令发出去立刻就会执行,而是处理信号的代码发现了信号改变才会停止worker,这个是需要自己实现的.

比如上方代码在signal.isSet()发生改变之后,跳出了while循环,实际上worker已经结束了,exit方法是为了增加可读性的,完全没必要加.

通过任何方法结束线程都可以,运行完毕或者手动exit都可以

python 终止程序代码 多线程_我想问一下,tkinter 做多线程爬虫,让他停止该怎么做 quit 和 exit 都是直接退出程序...相关推荐

  1. python 运行程序代码_一些python程序

    <从问题到程序:用Python学编程和计算>--1.2 Python语言简介 本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 ...

  2. python函数增强代码可读性_如何提高代码的可读性 学习笔记

    本文整理自 taowen 师傅在滴滴内部的分享. 1.Why 对一线开发人员来说,每天工作内容大多是在已有项目的基础上继续堆代码.当项目实在堆不动时就需要寻找收益来重构代码.既然我们的大多数时间都花在 ...

  3. 怎么用python编写程序计算标准差_自学生信Python(第五天)|如何计算标准差?...

    如何计算标准差? 本人是一枚生物学的学生,由于对生物信息学特别感兴趣,于是想自学生物信息学(新手莫怪).了解到生物信息学要有编程基础,尤其是要会一门编程语言,例如:R语言.Python.Perl等,还 ...

  4. 以下选项中使python脚本程序转变为_以下选项中使python脚本程序转变为可执行程序的第三方库的是:...

    [多选题]拉式市场的供应链系统就是以客户为导向进行( ). [单选题]五行关系中"见肝之病,知肝传脾"是指 [单选题]已知立体的主视图和俯视图,正确的左视图是(         ) ...

  5. python如何执行代码漏洞_命令执行与代码执行漏洞原理

    本篇笔记摘自微信"黑白天",如有侵权,联系删除 命令执行定义 当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数.如PHP中的system,exec,sh ...

  6. python 表白程序代码_python抖音表白程序源代码

    本文实例为大家分享了python抖音表白程序的具体代码,供大家参考,具体内容如下 import sys import random import pygame from pygame.locals i ...

  7. python显示程序运行进度_显示Python程序运行进度

    前两天做query分析时候,需要从20w随机query中筛选出包括股票实体的query,股票实体大概5000多个.于是写了个循环处理,代码如下:# 读取query with open('query_2 ...

  8. python 终止程序

    有时当一个条件成立的情况下,需要终止程序,可以使用sys.exit()退出程序.sys.exit()会引发一个异常 1.如果这个异常没有被捕获,那么python编译器将会退出,后面的程序将不会执行. ...

  9. 程序代码初学者_初学者:如何使用热键在Windows中启动任何程序

    程序代码初学者 Assigning shortcut keys to launch programs in Windows is probably one of the oldest geek tri ...

  10. 程序代码初学者_初学者极客:在Windows 7和Vista中设置默认程序

    程序代码初学者 If you've ever installed a program and suddenly found certain file types opening with it ins ...

最新文章

  1. python编程从入门到精通 叶维忠 pdf-叶维忠《Python编程从入门到精通》PDF
  2. Python--状态码的简介与获取方法
  3. c语言指针指向字符串单个,C语言 有没有可能调用一个指向字符串的函数指针?...
  4. 计算机控制系统从本质上看,计算机控制系统测试题.doc
  5. day21-python模块
  6. 谈一谈并查集QAQ(上)
  7. php tp 模板assign,thinkphp中怎么让assign在另一个模板里使用呢?
  8. php 前置操作方法,前置操作-THINKPHP 5.0 手册最新版
  9. 自驾日产轩逸由沈阳去西藏拉萨,车辆和现在的路况到底行不行?
  10. python-levenshtein —— 字符串相似度的计算
  11. Android静默安装
  12. python电脑录屏软件_可以推荐一款电脑录屏软件吗?
  13. vue 读取 txt
  14. 安卓手机通电自动开机,自动执行脚本,断电关机,连接电源手机自动开机,断电关机
  15. 小米笔记本Air13.3扩充硬盘
  16. 《摄影测量学》空间后方交会详细解读
  17. 这样设计积分兑换系统,让你的用户“活”起来
  18. java截图+中文图片识别
  19. super是不是java中的标识符_java关键字super和this是什么?有什么区别?
  20. 【视频】主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享

热门文章

  1. css3渐变画斜线 demo
  2. 服务器环境配置nginx / php / php-fpm(二)
  3. erlang中如何调试程序
  4. 了解protected 以及公用、私有和受保护的继承
  5. 水晶报表图表出现红叉叉的解决方法
  6. 如何在C#中读写INI文件
  7. Java泛型原理、类型擦除
  8. Mysql索引的本质深入浅出(二)
  9. @Scope注解的proxyMode的作用以及如何影响IoC容器的依赖查找
  10. java项目 服务器部署Word转成PDF乱码