Python Lock acquire()实例讲解
时间:2022-04-07
本文章向大家介绍Python Lock acquire()实例讲解,主要分析其语法、参数、返回值和注意事项,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
Python Lock.acquire() 方法
acquire() 是 Python 中线程模块的 Lock 类的内置方法。
此方法用于获取锁,阻塞或非阻塞。当它在没有参数的情况下被调用时,它会阻塞调用线程,直到当前使用它的线程解锁锁。
模块:
from threading import Lock
用法:
acquire( blocking=True, timeout=-1)
参数:
blocking
:它是一个可选参数,用作阻塞标志。如果设置为 True,调用线程将在其他线程持有该标志时被阻塞,一旦该锁被释放,调用线程将获取该锁并返回 True。如果设置为 False,则如果其他线程已获取锁,则不会阻塞该线程,并返回 False。其默认值为 True。timeout
:它是一个可选参数,它指定如果其他方法当前正在获取锁,调用线程将被阻塞的秒数。它的默认值是 -1,表示线程将被无限期阻塞,直到它获得锁。
注意:blocking 为 false 时禁止指定超时。
返回值:
这个方法的返回类型是<class 'bool'>
.该函数用于在实现多线程时获取锁,如果成功获取锁则返回 True,否则返回 False。
例:
# Python program to show
# the use of acquire() method in Lock class
import threading
import random
class shared(object):
def __init__(self, x = 0):
# Created a Lock object
self.lock = threading.Lock()
self.incr = x
# Increment function for the thread
def incrementcounter(self):
print("Waiting for the lock to be unlocked")
# Lock acquired by the current thread
self.lock.acquire()
try:
print('Lock acquired, current counter value:', self.incr)
self.incr = self.incr + 1
finally:
print('Lock released, current counter value:', self.incr)
# Lock released by the given thread
self.lock.release()
def helper_thread(c):
# Getting a random integer between 1 to 3
r = random.randint(1,3)
print("Random value selected:", r)
for i in range(r):
c.incrementcounter()
print('Finished', str(threading.current_thread().getName()))
print()
if __name__ == '__main__':
obj = shared()
thread1 = threading.Thread(target=helper_thread, args=(obj,))
thread1.start()
thread2 = threading.Thread(target=helper_thread, args=(obj,))
thread2.start()
thread1.join()
thread2.join()
print('Final counter value:', obj.incr)
输出
Random value selected:1 Waiting for the lock to be unlocked Lock acquired, current counter value: 0 Lock released, current counter value: 1 Finished Thread-1 Random value selected:2 Waiting for the lock to be unlocked Lock acquired, current counter value: 1 Lock released, current counter value: 2 Waiting for the lock to be unlocked Lock acquired, current counter value: 2 Lock released, current counter value: 3 Finished Thread-2 Final counter value:3
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法