python threading.Thread实现多线程

本文通过Python代码演示了如何使用threading模块创建线程,并介绍了线程锁的使用方法来确保线程间的同步,避免数据竞争。展示了两种不同的线程锁使用方式及其对程序执行效率的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考下面的网址
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))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值