Python中的多线程和加锁限制访问

这篇博客介绍了Python中的多线程概念,包括Thread类的定义和使用,以及如何给线程上锁。讲解了Lock和Condition在生产者消费者模式中的应用,强调了正确释放锁的重要性,并对比了Lock与Condition的优劣。最后鼓励读者持续学习。
摘要由CSDN通过智能技术生成

5月30日学习笔记

Thread类的定义

安装pip install threading (好像是内置的)
Thread类定义threading.Thread(self, group=None, target=None, name=None,agrs=(),kwargs=None, *, daemon=None)

参数group是预留的,用于将来扩展;

参数target是一个可调用对象,在线程启动后执行;

参数name是线程的名字。默认值为“Thread-N“,N是一个数字;

参数args和kwargs分别表示调用target时的参数列表和关键字参数。

创建一个Thread类

要创建一个thread类,要从threading.Thread中继承。
例如

import threading
class demo1_thread(threading.Thread):
#run方法,可以将其重写并把要执行的函数放在这
	    def run(self):
        the_thread = threading.current_thread()#current—_thread(),获取当前线程
        for x in range(3):
            print("%s正在执行..." % the_thread.name)

        

然后在主函数main中执行start()即可。

给线程上锁

使用锁的原则:

  1. 把尽量少的和不耗时的代码放到锁中执行。
  2. 代码执行完成后要记得释放锁。
    因为上锁是很占用计算机资源的
    threading中内置有Lock用于上锁
gLock = threading.Lock()
value = 0
def add_value():
    # 如果在函数中修改了全局变量,那么需要使用
    # global关键字进行申明
    global value
    gLock.acquire()#用于上锁
    # gLock.acquire()
    for x in range(1000000):
        value += 1
    gLock.release()#用于释放锁
    print("value的值是:%d"%value)

Lock版的生产者和消费者模式

生产者和消费者模式是多线程开发中经常见到的一种模式。生产者的线程专门用来生产一些数据,然后存放到一个中间的变量中。消费者再从这个中间的变量中取出数据进行消费。通过生产者和消费者模式,可以让代码达到高内聚低耦合的目标,程序分工更加明确,线程更加方便管理。说白了就是不同线程共用相同的资源,并借此传递信息。

import threading
import random

gMoney = 0
gLock = threading.</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值