python原生结束线程的方法

摘要:
Python线程本身不提供Kill()方法来结束线程#Encoding:UTF-8 importThreadingimportTime#一个完全本地的方法来强制Python线程结束。请注意,重新打印来自博客公园deffunc:#caller function print“intimecontrol”t把手。setDaemon#将tHandle线程设置为守护进程,密钥!!手柄。start()#让tHandle线程进入阻塞状态tHandleJoin#t Handle有这么多秒的超时要运行,然后进入blockprint“outtimecontrol”#执行完这句话后,由于tHandle线程是这个线程的守护进程#,tHandle会在调用方结束后结束,从而达到杀死tHandlet线程defcheckproxy:print“incheckprovide”的目的时间睡眠时间。sleepprint“outcheckproxy”#这个句子在本例中不运行,因为这个句子将在20+1=21秒后运行。#然而,调用者只有2秒钟的时间运行,然后调用者结束,线程也结束。

Python的threading 本身没有提供.kill()方法来结束线程。但是只需要一个小小的变通就可以实现。

一个caller线程在里面调用需要控制时间的tHhandle线程并把tHhandle线程设置.setDaemon()方法为True。caller线程结束,tHandle线程就会跟着结束。

# encoding: UTF-8
importthreading
importtime
#完全原生强制结束python线程的方法。转载请注明来自博客园
deffunc(tHandle,timeout):
#caller 函数
print'in time control.'
tHandle.setDaemon(True) #设置tHandle线程为daemon,关键地方!!
tHandle.start()# 让tHandle线程进入阻塞状态
tHandle.join(timeout) #tHandle 有timeout这么多秒的时间运行之后进入阻塞(也可以认为是挂起)
print'out time control'#这句执行完毕后,由于tHandle线程是此线程的守护程序
#因此caller结束后tHandle也就结束了,从而达到kill tHandle线程的目的
defcheckproxy(timewait,timewait2):
print'in checkproxy.'
time.sleep(timewait)
time.sleep(timewait2)
print'out checkproxy.'#这句在此例子里是不运行的,因为此句要在20+1=21秒之后运行,
#但是caller 只给了2秒时间运行,然后caller结束,此线程也要结束。所以运行不到
tcheck =threaking.Thread(target=checkproxy,args=(1,20,))
caller=threading.Thread(target=func,args=(tcheck,2,))
caller.start()
#运行结果:
#in time control.
#in checkproxy.
#out time control

免责声明:文章转载自《python原生结束线程的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL通过自定义函数以及存储过程实现递归查询父级ID杂记:VMware中为mac虚拟机扩容下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux环境安装opencv导入依赖报错问题

linux环境通过pip安装opencv后,导入cv2时报错: 在centos和ubuntu环境下都遇到相同的问题。报错原因: 缺少共享库有两种解决办法:一.使用如下命令查看缺少得共享库yum whatprovides libSM.so.6使用以下命令解决:yum install libSM-1.2.2-2.el7.x86_64 --setopt=prot...

python获取知乎日报另存为txt文件

前言 拿来练手的,比较简单(且有bug),欢迎交流~ 功能介绍 抓取当日的知乎日报的内容,并将每篇博文另存为一个txt文件,集中放在一个文件夹下,文件夹名字为当日时间。 使用的库 re,BeautifulSoup,sys,urllib2 注意事项 1.运行环境是Linux,python2.7.x,想在win上使用直接改一下里边的命令就可以了 2.bug是在...

python测试开发django-29.发送html格式邮件

前言 上一篇已经通过send_mail()函数发送纯文本的邮件,发送成功了,如果我们想发送一个html格式的邮件,如何实现呢? 发送html格式的邮件实际上还是调用send_mail()函数 ,只需多加一个html_message参数 html_message参数 从上一篇的send_mail()函数里面可以看出,里面有个参数html_message默认是...

Python 用SMTP发送邮件

一、简介  上面介绍了传统邮件的生成和解析,这些都是non-internet,也就是不需要网络就可一完成的。那么当生成了邮件,下一步就是发送了,本文就讲解利用SMTP协议发送邮件。  正如SMTP(Simple Mail Transfer Protocal)名字一样,只能发送简单邮件。上面讲解就是生成的简单邮件,完全可以通过SMTP协议来发送。 二、SMT...

python数据处理的常用操作

python数据处理 1.生成数据2.数据表检查3.数据表清洗4.数据预处理5.数据提取6.数据筛选7.数据汇总8.数据统计9.数据输出 1.生成数据 1.导入数据表 df=pd.read_excel('C:/Users/Admin/Desktop/types/output.xlsx')df1=pd.read_csv('C:/Users/Admin/...

HttpClient4.3教程 第二章 连接管理

HttpClient4.3教程 第二章 连接管理 Posted on2013 年 10 月 11 日 2.1.持久连接 两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间。Http连接需要的三次握手开销很大,这一开销对于比较小的http消息来说更大。但是如果我们直接使用已经建立好的http连接,这样花费就比较小,吞吐率更大...