Python中读写锁的等价物和Python中原子数据类型的等价物是什么?

Python中读写锁的等价物和Python中原子数据类型的等价物是什么?,python,multithreading,python-2.7,python-3.x,concurrency,Python,Multithreading,Python 2.7,Python 3.x,Concurrency,Python似乎只有排他锁,但当我保护一些数据时,这不是一个好的选择,因为我希望允许多个读线程同时读取一些关键数据,而只以排他方式访问一个线程来修改数据。 GIL Python不允许同时执行多个解释器线程。但是读写锁仍然是一个很好的补充 此外,原子数据类型(如原子整数、原子布尔)非常有用。例如,当函数从多个线程同时多次调用时,我可能希望保留一个变量,用于记录从某个函数处理的数据的大小。原子整数或long完全符合这一要求,并且使我们免于昂贵的锁操作。java有他们,C++有他们,去拥有它们;我希望

Python似乎只有排他锁,但当我保护一些数据时,这不是一个好的选择,因为我希望允许多个读线程同时读取一些关键数据,而只以排他方式访问一个线程来修改数据。 GIL Python不允许同时执行多个解释器线程。但是读写锁仍然是一个很好的补充


此外,原子数据类型(如原子整数、原子布尔)非常有用。例如,当函数从多个线程同时多次调用时,我可能希望保留一个变量,用于记录从某个函数处理的数据的大小。原子整数或long完全符合这一要求,并且使我们免于昂贵的锁操作。java有他们,C++有他们,去拥有它们;我希望我们也能在Python中使用它们

“昂贵的锁操作”-如果您的性能要求导致锁被认为是昂贵的,那么Python可能不是该作业的语言。@user2357112您是正确的。Python对于我当前的项目来说是一个糟糕的选择。Python并发性一点也不好。但是对于我正在进行的当前项目,已经有很多代码是用Python编写的。将它们全部迁移到C/C++/Go/Java将是一项艰巨的任务,而不是现在的选择。我在pre-forked模式下使用芹菜,但它有自己的缺点。有读写实现和一些指向其他实现的链接,读写锁的全部原因是并发访问。当你无论如何都不能拥有它的时候,它就失去了它的大部分正当性。好吧,这将允许您以牺牲整个过程为代价降低延迟,但我并不认为这是您想要的。您还分析了代码,发现锁是最大的性能杀手?在进行性能度量时,每种语言都是一样的:首先度量然后做一些事情,其他一切都是毫无意义的。