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秒。