我想知道python / ruby中的多线程是否等同于java中的多线程?
我的意思是,它是否有效?
因为如果你想创建一个使用彗星技术的聊天应用,我知道你必须使用多线程。
这是否意味着我可以使用python或ruby,或者使用java更好吗?
感谢
答案 0 :(得分:9)
这不是关于Ruby,Python或Java的问题,而是关于Ruby,Python或Java的特定实现的更多信息。有极其高效的线程实现的Java实现,并且存在具有极其错误的线程实现的Java实现。对Ruby和Python也是如此,基本上任何语言都是如此。
即使像Erlang这样的低效线程实现甚至无法实现 sense 的语言,有时也会出现错误的线程实现。
例如,如果您使用JRuby或Jython,那么您的Ruby和Python线程是 Java线程。因此,它们不仅与Java线程一样高效,它们与完全相同。
答案 1 :(得分:3)
Ruby和Python都使用全局解释器锁。这里将详细讨论该问题:Does ruby have real multithreading?
答案 2 :(得分:1)
philosodad指出GIL所呈现的约束并没有错。我不会说Ruby,但我确信可以安全地假设当你引用Python时,你实际上指的是规范的cPython实现。
在cPython的情况下,如果你想并行化在Python中实现的计算密集型操作,GIL最重要(就像在可以发布GIL的C扩展中那样)。
但是,当您编写非密集的I / O绑定应用程序(如聊天程序)时,线程实现的效率实际上只是无关紧要。