python - 即使每个变量没有被其他线程访问/写入,我是否应该使用锁来写入类变量(在线程期间)?
问题描述
我有一个类可以解析很多字符串。有 6 个主要变量被 6 个线程写入。所有字符串的总字符数将超过 500,000 个字符。
每个线程独立工作,即它们的所有字符串都不会与其他字符串发生冲突或被其他字符串引用。这意味着所有线程在输入方面相互排斥,并且在输出时,它们只写入类中的变量。
在写入这些变量期间,我应该在类中实现锁定机制吗?
EDIT1:完成线程。但是,为了比较执行速度,我也同时运行。我发现顺序运行需要 1.44 秒,线程化需要 2.33 秒。我究竟做错了什么?
解决方案
如果您的类级别变量要由所有线程更新,您需要使用类级别锁,如下所示。
class Parser(object):
sharedLock = threading.Lock()
var1 = var2 = var3 = var4 = var5 = var6 = 0
@classmethod
def update(cls):
with cls.sharedLock:
# update your variables.
推荐阅读
- vb.net - 我该如何更正 ExecuteNonQuery
- tensorflow-hub - 获取 TFhub 的模型下载统计信息
- excel - 如何将字母字符从 AA 增加到 ZZ?
- python - For循环中的循环变量内存
- css - 无论屏幕大小如何,都能保持背景图像响应能力
- reactjs - 类型“{}”缺少类型中的以下属性
- c++ - 初始化数组,以便可以找到分配到数组中的值的数量
- javascript - 如果客户端发生 PayPal 结帐中断,会发生什么情况?
- sql - SQL:如何在滑动窗口框架中使用线性回归或 regr_slope()?
- python - 使用 Boto3 填充 DynamoDB 表的 AWS Lambda 函数