python多线程_thread使用锁
【锁】分为【创建锁】【获取锁】【释放锁】1.allocate_lock函数 【创建锁对象】2.acquire方法【获取锁】,3.release方法【释放锁】完成【锁】这三个功能需要_thread模块中的1个函数和2两个方法。判断锁释放,locked【方法】下例启动了【两个线程】1.【创建锁对象】创建两个【锁】2.【获取锁】在运行线程函数前【获取锁】,这时锁处于锁定状态。启动线程时,将这两个锁对象分
【锁】分为【创建锁】【获取锁】【释放锁】
1.allocate_lock
函数 【创建锁对象】
2.acquire方法
【获取锁】,
3.release方法
【释放锁】
完成【锁】这三个功能需要_thread模块中的 1个函数
和 2两个方法
。
判断锁释放,locked
【方法】
下例启动了【两个线程】
1.【创建锁对象】
创建两个【锁】
2.【获取锁】
在运行线程函数前【获取锁】
,这时锁处于锁定状态。
启动线程时,将这两个锁对象分别传入两个线程各自的锁对象,
3.【释放锁】
当线程函数执行完后,会调用所对象的release方法【释放锁】
。
在main()函数的最后定义 【while】循环和【locked()】判断释放方法。
判断这两个锁对象是否已经释放,
当其中一个锁对象没释放while循环就不退出。
当两个锁对象都释放了,那么main()函数结束,程序退出。
import _thread as thread
from time import sleep,ctime
def fun(index,sec,lockNum):
print("开始执行:",index,"执行时间:",ctime())
sleep(sec)
print("执行结束:",index,"执行时间:",ctime())
lockNum.release()
def main():
lock1= thread.allocate_lock()
lock1.acquire()
thread.start_new_thread(fun,(100,4,lock1))
lock2=thread.allocate_lock()
lock2.acquire()
thread.start_new_thread(fun,(200,2,lock2))
while lock1.locked() or lock2.locked():
pass
if __name__=="__main__":
main()
代码讲解
import _thread as thread
from time import sleep,ctime
def fun(index,sec,lockNum):
#fun(<线程函数,整数类型索引><休眠秒数><锁的对象>)
print("开始执行:",index,"执行时间:",ctime())
#输出执行时的时间
sleep(sec)
#进行休眠
print("执行结束:",index,"执行时间:",ctime())
#输出执行后的时间
lockNum.release()
#对锁的对象进行释放
def main():
lock1= thread.allocate_lock()
#【创建锁对象】 变量命名为<lock1>
lock1.acquire()
#【获取锁】
thread.start_new_thread(fun,(100,4,lock1))
#创建一个线程 执行函数 传入参数 (线程函数,元组数据(<整数索引值><秒数><创建的锁对象>))
lock2=thread.allocate_lock()
#【创建锁对象】
lock2.acquire()
#获取锁
thread.start_new_thread(fun,(200,2,lock2))
# 创建一个线程 执行函数
# 判断两个锁是否被释放
while lock1.locked() or lock2.locked():
# 当lock1,lock2其中一个未被释放,就死循环(不退出)
pass
if __name__=="__main__":
main()

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)