python - 您应该在 API 方法内部还是外部获取锁?
问题描述
假设您有一个打算在多个线程之间共享的类。Python 示例:
class ConcurrentClass:
lock = threading.Lock()
data1 = 1
data2 = 2
def modify_values(self, a, b):
self.data1 = a
self.data2 = b
最好在方法 modify_values() 中获取锁吗?
# class method
def modify_values(self, a, b):
with self.lock:
self.data1 = a
self.data2 = b
# calling code
co = ConcurrentClass()
co.modify_values(1, 2)
还是应该让调用该函数的人来处理它?
# class method
def modify_values(self, a, b):
self.data1 = a
self.data2 = b
# calling code
co = ConcurrentClass()
with co.lock:
co.modify_values(1, 2)
解决方案
推荐阅读
- graphql - 订阅的 GraphQLObjectType
- python - 什么相当于 R 中 Python 中的 str.split("/path/to/file", os.sep)
- firebase - 使用 sendgrid 来自 firebase 的附件
- xml - mvn deploy 无法发布要交换的应用程序
- r - R:通过设置每列的最大缺失观察数来聚合数据框
- angular - 如何在不为此创建新元素的情况下即时将 ngx-lottie 路径替换为不同的路径?
- airflow - 获取“NoneType”对象没有属性“extra_dejson”错误
- arrays - 谁能帮我解决这个项目中的错误参数 hitTestObject 必须为非空?
- java - 从范围报告 3.1.5 迁移到 Selenium 的 4.1.6
- json - 将 Json 数据从本地文件加载到 REACT 中的 Typescript 变量中