Python简单使用多线程

Python简单使用多线程

利用多线程同时执行3次函数,分别使用sleep去添加延时时间,观察程序最后执行结束的时间

# -*- coding:utf-8 -*-
import threading
import datetime
import time

locks = None


def unit_test(sleep):
    """
    多线程单元测试
    :param sleep: 等待的时间
    :return:
    """
    # locks.acquire()   获取锁 -- 获取锁之后,其他的线程在此等待
    print('start loop {}, '.format(sleep), datetime.datetime.now())
    time.sleep(sleep)
    print('loop {} down, '.format(sleep), datetime.datetime.now())
    # locks.release()   释放锁 -- 如果不释放锁,后续的线程会一直被阻塞不能进入


def thread_run(sleep_list):
    """
    运行多线程
    :param sleep_list: 延时时间列表
    :return:
    """
    global locks
    locks = threading.Lock()
    threads = []
    start_time = datetime.datetime.now()

    # insert all threads to threads list
    for i in sleep_list:
        t = threading.Thread(target=unit_test, args=(i,))
        threads.append(t)

    # start all threads
    for thread in threads:
        thread.start()

    # waiting all thread close
    for thread in threads:
        thread.join()

    end_time = datetime.datetime.now()
    print('所有线程结束,一共消耗{}秒钟'.format((end_time - start_time).seconds))


def main():
    sleep_list = [2, 4, 1]
    thread_run(sleep_list=sleep_list)


if __name__ == '__main__':
    main()

执行结果:

start loop 2,  2020-01-15 16:53:48.156806
start loop 4,  2020-01-15 16:53:48.156806
start loop 1,  2020-01-15 16:53:48.157804
loop 1 down,  2020-01-15 16:53:49.158589
loop 2 down,  2020-01-15 16:53:50.157596
loop 4 down,  2020-01-15 16:53:52.158573
所有线程结束,一共消耗4秒钟

从执行时间可以看出,程序在调用的时候是同时执行的,sleep最大值为4秒,程序总共运行时间也只花费了4秒。

发布了27 篇原创文章 · 获赞 10 · 访问量 368

猜你喜欢

转载自blog.csdn.net/weixin_43750377/article/details/103992387