with mutex的用法

2020年6月23日 / 3次阅读 / Last Modified 2020年6月23日
多线程

python语法提供的with语句是很不错的,可以打开资源并在离开with block的时候,强行关闭,就算block里面有return都不用担心。

多线程中常常用到的Lock和RLock,也都可以使用with语法来编写代码。既可以减少代码行数,也确保了release。

举个例子吧,这个例子来自线程不安全的示例,我又稍微修改了一点:

from threading import Thread, Lock

number = 0
mutex = Lock()

def target():
    global number
    for _ in range(1000000):
        with mutex:
            number += 1

thread_01 = Thread(target=target)
thread_02 = Thread(target=target)
thread_03 = Thread(target=target)
thread_01.start()
thread_02.start()
thread_03.start()
thread_01.join()
thread_02.join()
thread_03.join()

print(number)

执行结果是3000000!说明with mutex OK!

-- EOF --

本文链接:https://www.pynote.net/archives/2076

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top