jython multithreading

2022-09-03 02:31:14

几个月前,我开始研究python,然后我找到了Jython。

线程在 Jython 中是否正常工作,因为它没有 GIL?如果是这样,你能推荐一本关于并发(线程)的好书吗?


答案 1

我遇到的关于多线程的最好的书是“Java并发实践”。它非常专注于Java线程并发性,当您开始理解并发性带来的问题和可能性时,既令人谦卑又令人兴奋。不过,我几年前买的副本在编码中有一些勘误表,这加剧了一个已经充满大脑挑战的主题:在这里查看勘误表:http://jcip.net/errata.html

虽然是为希望冒险进入并发的Java开发人员设计的(顺便说一句,包括任何曾经使用过任何类型的GUI界面的人),但我相信书中概述的技术困难和微妙之处适用于并发的任何实现。

顺便说一句,我也喜欢Jython,并且可以确认在Java中可以执行的任何并发性方面,您显然可以在Jython中执行。但是,有一个警告:并发可以用于异步编程(包括 GUI)和/或性能。如果对于后者,您有问题,在我看来:根据我的经验,Jython的运行速度比等效的Java程序慢10倍。

这意味着你要求更高的Jython模块将不得不调用Jython以外的其他东西来完成数字运算任务。与此同时,到目前为止,Jython*还没有Python的多处理模块,所以进程间通信已经出局,除非你冒险进入RMI这个可怕的领域。如果你选择这个选择,你比我更像一个男人/女人。但一切都很好:请参阅 http://www.jython.org 的“Jython权威指南”...第19章是对并发的一种告密介绍,第10章是关于集成Java和Jython的(提示:这非常容易)。

  • 有趣的是:快速浏览一下Jython网站就会发现,就在10天前,17/05/12,版本2.7a1发布了...“阿尔法”版本。这应该包含Python 2.6附带的多处理模块。检查一下很有趣:如果是这样,它可能会给你一个令人兴奋的选项,链接Jython和CPython进程(稍后更新:可悲的是,目前看来情况并非如此 - 当我尝试时,模块名称“multiprocessing”没有被识别)...

PS最后一句话:大多数专家对这些事情的了解比我多得多,他们说摩尔定律正在被阿姆达尔定律所取代,简而言之,这意味着编程稳定和可扩展的真正并发程序的艰巨挑战在未来将是不可避免的。使用聪明的代码分析工具,我可以说,真正(即线程)并发是多么容易,但对这个主题的投资以及并发强加的引人入胜的,智力上的新推理学科可能会得到回报......如果你喜欢挑战。


答案 2

是的,有了Jython,你就有了真正的多线程。Jython(JPython的继任者)是在JVM中运行的Python的实现。Jython和原始项目之间的主要区别之一是,第一个项目没有GIL,而是基于JVM的实现实现了真正的多线程支持。

我建议你看看这本书OReilly的书