python - 如何在Python中使用锁允许多个线程更改对象的不同部分?

标签 python multithreading locks

我希望允许不同的线程通过仅获取这些元素而不是整个对象的锁来对 Value 的不同元素进行更改。

例如:考虑字典 -

D = {1:[时间、速度、距离],2:[时间1,速度1,距离1], 3:[时间2,速度2,距离2]}

线程T1修改D[1][0],线程T2修改D[1][1],线程T3修改D[ 2][2]等,因此T1应该锁定D[1][0],T2应该锁定D[1][1]。 T3 应锁定 D[2][2] 并同时修改它们。

最佳答案

在Python中,有Global Interpreter Lock ,所以你不必担心锁定。您也不会获得多线程的性能优势,至少不会像您习惯的 Java 或 C 那样。

简而言之,一次只有一个线程运行 Python 代码。如果您受 I/O 限制(例如网络访问),这就是您想要的解决方案。如果您受 CPU 限制(例如计算),请使用 native 模块或查看多处理模块。

关于python - 如何在Python中使用锁允许多个线程更改对象的不同部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28825037/

相关文章:

multithreading - 64位机器,int64和int16的性能

java - 可重入锁对象锁定

java - 同步块(synchronized block): lock many objects?

python - 在 Debian Linux 下的远程服务器机器上安装 Beautiful soup

python - 生成额外的行值,以便每个 ID 具有相同数量的条目

c++ - 为什么不重新锁定互斥锁的 condition_variable 没有等待函数

multithreading - Postgres 锁在不同的 goroutine 上表现不一致

python - 如何使用 PIL 保存 JPEG 元数据?

python - 如何忽略 Python 中所有潜在的异常?

java - 尝试并行运行 2 个 AsyncTasks,但它们似乎相互阻塞