Python/Ruby与Java的多线程比较?
我想知道,Python和Ruby里的多线程和Java里的多线程是不是一样的?
我的意思是,它们的效率是否相同?
因为如果你想做一个使用Comet技术的聊天应用,我知道你需要用到多线程。
这是否意味着我可以用Python或Ruby来做这个,还是用Java更好呢?
谢谢!
3 个回答
1
philosodad指出了GIL带来的限制,这一点是没错的。我不想替Ruby说话,但我可以肯定地说,当你提到Python时,实际上你是在说最常用的cPython版本。
对于cPython来说,GIL最重要的影响在于你想要并行处理一些计算量大的操作时(也就是说,这些操作是用Python写的,而不是用C扩展写的,因为在C扩展中可以释放GIL)。
不过,如果你在写一个不太耗资源的I/O密集型应用,比如聊天程序,那么线程的实现效率其实并没有那么重要。
3
Ruby和Python都使用了一种叫做全局解释器锁的东西。这个问题在这里有详细讨论:Ruby真的有真正的多线程吗?
10
这不是关于Ruby、Python或Java的提问,而是关于这些语言的某种具体“实现”。有些Java的实现在线程处理上非常高效,而有些则非常糟糕。Ruby和Python也是如此,基本上任何语言都有这样的情况。
就连像Erlang这样的语言,虽然在效率上不应该有问题,有时也会出现糟糕的线程实现。
举个例子,如果你使用JRuby或Jython,那么你的Ruby和Python线程实际上就是Java线程。所以,它们不仅和Java线程一样高效,实际上就是Java线程。