python:多线程

多线程的简单使用

需求:同时执行多个方法

from time import sleep
import datetime


def listen_music():
    print('我在听音乐%s' % datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
    sleep(2)


def play_basketball():
    print('我在打篮球%s' % datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
    sleep(3)


if __name__ == '__main__':
    listen_music()
    play_basketball()

输出:

通过执行时间, 可以发现上面的方式只能串行执行方法,第一个方法执行完成才执行第二个。

多线程方法,同时执行

from time import sleep
import threading
import datetime


def listen_music():
    print('我在听音乐%s' % datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
    sleep(2)


def play_basketball():
    print('我在打篮球%s' % datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
    sleep(3)


if __name__ == '__main__':
    t1 = threading.Thread(target=listen_music)
    t1.start()
    t2 = threading.Thread(target=play_basketball)
    t2.start()

输出:

 可以发现他们是同一时刻开始执行,看上面的数据毫秒数都一样,是不是非常严格的并发执行呢?

其实也不存在严格的同时,只不过是t1.start()和t2.start()之间代码量少执行的很快所以毫秒数一样,

当代码中增加几行语句时,输出就不一致了:

原文地址:https://www.cnblogs.com/gcgc/p/11698302.html