Jython中隐藏的多线程瓶颈?

dsi*_*cha 5 python java multithreading jvm jython

在Jython中可以阻塞多线程/并行性的一些常见隐藏事物是什么?我有一些并行代码(使用Python的线程库),它不能扩展到超过3-4个CPU,我确信这不是因为任何这些明显的陷阱:

  • 显式锁

  • 调用需要同步的库代码(我尝试并行化的算法基本上是从头开始编写的,不使用任何库.)

基本上所有的算法都是一堆字符串处理,列表和字典查找和数学.我的理解是,与CPython不同,Jython没有GIL.

xsc*_*ott 3

Jython 没有 GIL,但获得大量并行性非常困难。如果你有任何部分无法并行完成,你就会受到艾哈姆达尔定律的影响:

在并行计算中使用多个处理器的程序的加速受到程序的顺序部分所需的时间的限制。

此外,即使您进行纯粹的并行计算,您也会受到其他事情的影响,例如缓存紧张。还要记住,您的代码是在虚拟机之上运行的,因此即使您的代码是纯粹并行的,JVM 也可能有一些内部协调来阻碍您(垃圾收集是一个明显的候选者)。