美文网首页
python多线程

python多线程

作者: ayusong870 | 来源:发表于2020-03-24 16:23 被阅读0次

    1. threading.Thread

    方法一:Thread类

    Python的多线程Thread,有一个弊端,其多线程Thread是在一个python虚拟机下运行的,也就是说,无论多少个线程,都是在一个核内运行。

    class MyThread(threading.Thread):
        def __init__(self):
            threading.Thread.__init__(self)
            #其他
    def run(self):
        while(conditions):
            #代码
    Mt = MyThread()
    Mt.start()#启动线程
    

    Python的多线程没有强制停止,只能在conditions中增加手动停止的边界条件。

    方法二:简单多线程

    import threading
    from time import ctime,sleep
    
    def music(func):
        for i in range(2):
            print "I was listening to %s. %s" %(func,ctime())
            sleep(1)
    
    def move(func):
        for i in range(2):
            print "I was at the %s! %s" %(func,ctime())
            sleep(5)
    
    threads = []
    t1 = threading.Thread(target=music,args=(u'爱情买卖',))
    threads.append(t1)
    t2 = threading.Thread(target=move,args=(u'阿凡达',))
    threads.append(t2)
    
    for t in threads:
        t.setDaemon(True)
        t.start()
    
    print "all over %s" %ctime()
    

    守护线程

    setDaemon(True)将线程声明为守护线程,必须在start() 方法调用之前设置,如果不设置为守护线程程序会被无限挂起。
    The entire Python program exits when no alive non-daemon threads are left
    上面这句话的意思是:当没有存活的非守护进程时,整个python程序才会退出。
    也就是说:如果主线程执行完以后,还有其他非守护线程,主线程是不会退出的,会被无限挂起;必须将线程声明为守护线程之后,如果队列中的数据运行完了,那么整个程序想什么时候退出就退出,不用等待。

    相关文章

      网友评论

          本文标题:python多线程

          本文链接:https://www.haomeiwen.com/subject/edwcrhtx.html