Python多线程 2020-04-30

2020-04-30  本文已影响0人  五道口的程序狐

https://www.cnblogs.com/fnng/p/3670789.html

做一下摘录(包括评论区里面指出的问题):

import threading
from time import ctime, sleep


def music(func):
    for i in range(2):
        print("I started listening to %s. %s" % (func, ctime()))
        sleep(1)
        print("I finished listening to %s. %s" % (func, ctime()))


def movie(func):
    for i in range(2):
        print("I started to watch %s! %s" % (func, ctime()))
        sleep(5)
        print("I finished watching %s! %s" % (func, ctime()))


threads = []
t1 = threading.Thread(target=music, args=('爱情买卖',))
threads.append(t1)
t2 = threading.Thread(target=movie, args=('阿凡达',))
threads.append(t2)

if __name__ == '__main__':
    for t in threads:
        t.setDaemon(True)  # 守护线程,需要在start之前设置;守护线程的意思就是,被守护的挂掉了他也就走了,比如背景音乐
        t.start()

    for t in threads:
        t.join()
        # 为什么要写在另一个循环里面呢?
        # 这两个线程中,如果第一个比第二个快,那就是先在第一个线程中阻塞,第二个线程来了再继续阻塞;
        # 如果第二个比第一个快,那就是第一个线程中直接阻塞到头了,第二个线程执行join的时候已经做完了,不用阻塞了

    print("all over %s" % ctime())
上一篇 下一篇

猜你喜欢

热点阅读