zoukankan      html  css  js  c++  java
  • python原生结束线程的方法

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

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

    # encoding: UTF-8
    import threading
    import time
    #完全原生强制结束python线程的方法。转载请注明来自博客园
    def func(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线程的目的
     
    def checkproxy(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
  • 相关阅读:
    [ SharePoint ADFS 开发部署系列 (一)]
    [ Office 365 开发系列 ] Graph Service
    [ Office 365 开发系列 ] 身份认证
    [ Office 365 开发系列 ] 开发模式分析
    [ Office 365 开发系列 ] 前言
    Debian安装Chrome
    SharePoint 常用操作杂谈
    SharePoint Managed Metadata 使用总结
    SharePoint PerformancePoint开发实例
    node使用mysql报错
  • 原文地址:https://www.cnblogs.com/lexus/p/2497116.html
Copyright © 2011-2022 走看看