Python与Java -- 你会选择哪个进行并发编程,为什么?
另外,如果不选择Python或Java的话,你更倾向于选择一种静态类型语言还是动态类型语言呢?
11 个回答
11
绝对推荐 Stackless Python!这是一个专门为并发设计的Python版本。
不过最终还是要看你想要在哪个平台上使用,以及你想要实现什么目标。
13
如果要处理并发问题,我会选择Java。其实我说的Java是指Scala,因为Scala借鉴了很多Erlang的并发特性,但对于那些从未接触过这两种语言的Java开发者来说,Scala可能更容易上手。
Python的线程有一个问题,就是需要等待全局解释器锁,这让在单个进程中实现真正的并发变得很困难,特别是对于那些需要大量CPU计算的程序。根据我的理解,Stackless Python解决了一些CPython在并发方面的不足,但因为我没有使用过,所以无法给出具体建议。
33
我会选择JVM而不是Python,主要是因为Python在多线程方面受到一个叫做全局解释器锁的限制。不过,Java在JVM上运行时也不一定是最好的选择。像Clojure或者Scala(使用演员模型)可能更适合处理多线程的问题。
如果你选择了Java,建议你使用java.util.concurrent这个库,而不是使用一些基本的多线程工具,比如synchronized。