Java和Python中威胁性的安全性与性能



用例:单个数据结构(哈希表、数组等(,其成员经常被多个线程访问,而这些线程很少修改。如何在保证线程安全(即防止脏读(的同时保持性能。

Java:数据结构的并发版本(并发哈希图、向量等(。

Python:如果只有线程访问它,则不需要,因为GIL。如果是多个进程将读取和更新数据结构,请使用线程处理。锁。强制每个进程的代码在访问数据结构之前获取锁,并在访问数据结构后释放锁。

这听起来合理吗?Java的并发数据结构会对读取速度造成太大的损失吗?python中是否有更高级别的并发机制?

与其推理性能,我强烈建议为您的应用程序测量它。不要冒线程问题的风险来提高您很可能永远不会注意到的性能改进。

所以:编写线程安全的代码,没有任何性能技巧,使用一个体面的探查器来查找在数据结构访问中花费的时间百分比,然后决定该部分是否值得任何改进。

我敢打赌还会有其他瓶颈,而不是共享数据结构。

如果您愿意,请返回给我们并提供您的代码和探查器结果。

最新更新