VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • Python3基础之python使用多线程(4)

 

使用锁

python和java一样,也具有锁机制,而且创建与使用锁都是很简便的。

一般在多线程代码中,总会有一些特 定的函数或代码块不希望(或不应该)被多个线程同时执行,通常包括修改数据库、更新文件或 其他会产生竞态条件的类似情况

锁有两种状态:锁定和未锁定。而且它也只支持两个函数:获得锁和释放锁。

一般锁的调用如下

1
2
3
4
5
6
7
# 加载线程的锁对象
lock = threading.Lock()
# 获取锁
lock.acquire()
# ...代码
# 释放锁
lock.release()

更简洁的方法是使用with关键字,如下代码功能同上

1
2
3
4
# 加载线程的锁对象
lock = threading.Lock()
with lock :
    #...代码

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import threading
from time import sleep, ctime
 
lock = threading.Lock()
 
def a():
    lock.acquire()
    for in range(5):
        print(f'a:{str(x)}')
        sleep(0.01)
    lock.release()
 
 
def b():
    lock.acquire()
    for in range(5):
        print(f'a:{str(x)}')
        sleep(0.01)
    lock.release()
 
 
threading.Thread(target=a).start()
threading.Thread(target=b).start()

相关教程