python 终止程序代码 多线程_我想问一下,tkinter 做多线程爬虫,让他停止该怎么做 quit 和 exit 都是直接退出程序...
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 都是直接退出程序...相关推荐
- python 运行程序代码_一些python程序
<从问题到程序:用Python学编程和计算>--1.2 Python语言简介 本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 ...
- python函数增强代码可读性_如何提高代码的可读性 学习笔记
本文整理自 taowen 师傅在滴滴内部的分享. 1.Why 对一线开发人员来说,每天工作内容大多是在已有项目的基础上继续堆代码.当项目实在堆不动时就需要寻找收益来重构代码.既然我们的大多数时间都花在 ...
- 怎么用python编写程序计算标准差_自学生信Python(第五天)|如何计算标准差?...
如何计算标准差? 本人是一枚生物学的学生,由于对生物信息学特别感兴趣,于是想自学生物信息学(新手莫怪).了解到生物信息学要有编程基础,尤其是要会一门编程语言,例如:R语言.Python.Perl等,还 ...
- 以下选项中使python脚本程序转变为_以下选项中使python脚本程序转变为可执行程序的第三方库的是:...
[多选题]拉式市场的供应链系统就是以客户为导向进行( ). [单选题]五行关系中"见肝之病,知肝传脾"是指 [单选题]已知立体的主视图和俯视图,正确的左视图是( ) ...
- python如何执行代码漏洞_命令执行与代码执行漏洞原理
本篇笔记摘自微信"黑白天",如有侵权,联系删除 命令执行定义 当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数.如PHP中的system,exec,sh ...
- python 表白程序代码_python抖音表白程序源代码
本文实例为大家分享了python抖音表白程序的具体代码,供大家参考,具体内容如下 import sys import random import pygame from pygame.locals i ...
- python显示程序运行进度_显示Python程序运行进度
前两天做query分析时候,需要从20w随机query中筛选出包括股票实体的query,股票实体大概5000多个.于是写了个循环处理,代码如下:# 读取query with open('query_2 ...
- python 终止程序
有时当一个条件成立的情况下,需要终止程序,可以使用sys.exit()退出程序.sys.exit()会引发一个异常 1.如果这个异常没有被捕获,那么python编译器将会退出,后面的程序将不会执行. ...
- 程序代码初学者_初学者:如何使用热键在Windows中启动任何程序
程序代码初学者 Assigning shortcut keys to launch programs in Windows is probably one of the oldest geek tri ...
- 程序代码初学者_初学者极客:在Windows 7和Vista中设置默认程序
程序代码初学者 If you've ever installed a program and suddenly found certain file types opening with it ins ...
最新文章
- python编程从入门到精通 叶维忠 pdf-叶维忠《Python编程从入门到精通》PDF
- Python--状态码的简介与获取方法
- c语言指针指向字符串单个,C语言 有没有可能调用一个指向字符串的函数指针?...
- 计算机控制系统从本质上看,计算机控制系统测试题.doc
- day21-python模块
- 谈一谈并查集QAQ(上)
- php tp 模板assign,thinkphp中怎么让assign在另一个模板里使用呢?
- php 前置操作方法,前置操作-THINKPHP 5.0 手册最新版
- 自驾日产轩逸由沈阳去西藏拉萨,车辆和现在的路况到底行不行?
- python-levenshtein —— 字符串相似度的计算
- Android静默安装
- python电脑录屏软件_可以推荐一款电脑录屏软件吗?
- vue 读取 txt
- 安卓手机通电自动开机,自动执行脚本,断电关机,连接电源手机自动开机,断电关机
- 小米笔记本Air13.3扩充硬盘
- 《摄影测量学》空间后方交会详细解读
- 这样设计积分兑换系统,让你的用户“活”起来
- java截图+中文图片识别
- super是不是java中的标识符_java关键字super和this是什么?有什么区别?
- 【视频】主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享