参考下面的网址
https://www.cnblogs.com/csnd/p/11807840.html#%E4%BD%BF%E7%94%A8%C2%A0threading%E6%A8%A1%E5%9D%97%E5%88%9B%E5%BB%BA%E7%BA%BF%E7%A8%8B
自己实现了一下运行效果如下
import threading
import time
from datetime import datetime
def Test(name):
for i in range(3):
print(name,datetime.now())
time.sleep(1)
def main():
t1=threading.Thread(target=Test,args=("1111",)) #调用threading.Thread函数,target参数是要执行的函数,args是要传入的参数,为元组类型
t2=threading.Thread(target=Test,args=("2222",))
t1.start() #启动线程
t2.start()
t1.join() #必须等子线程运行完了父线程才可以运行
t2.join()
if __name__=='__main__':
start=time.time()
main()
end=time.time()
print("运行程序花费了%s秒"%(end-start))
加锁之后效果
import threading
import time
from datetime import datetime
threadLock=threading.Lock() #得到一个threadLock对象
def Test(name):
threadLock.acquire() ##获取锁,用于线程同步
for i in range(3):
print(name,datetime.now())
time.sleep(1)
threadLock.release() #释放锁,开启下一个线程
def main():
t1=threading.Thread(target=Test,args=("one",)) #调用threading.Thread函数,target参数是要执行的韩三户,args是要传入的参数,为元组类型
t2=threading.Thread(target=Test,args=("two",))
t1.start() #启动线程
t2.start()
t1.join() #必须等子线程运行完了父线程才可以运行
t2.join()
if __name__=='__main__':
start=time.time()
main()
end=time.time()
print("运行程序花费了%s秒"%(end-start))
改到下面的样子,运行时间变为3s左右
import threading
import time
from datetime import datetime
threadLock=threading.Lock()#得到一个threadlock对象
def Test(name):
for i in range(3):
threadLock.acquire()#获取锁,用于线程同步
print(name,datetime.now())
threadLock.release()#释放锁
time.sleep(1)
def main():
t1=threading.Thread(target=Test,args=("one",))
t2=threading.Thread(target=Test,args=("two",))
t1.start()
t2.start()
t1.join()
t2.join()
if __name__=="__main__":
start=time.time()
main()
end=time.time()
print("程序运行花费了%s秒" % (end-start))