代码之家  ›  专栏  ›  技术社区  ›  James

“Pythonic”多线程(并发)语言

  •  3
  • James  · 技术社区  · 7 年前

    我现在主要用Python编写,但是我在寻找一种更友好的语言(不是java、C++、C或C++)。

    Python的线程在IO绑定时是很好的,但是当我做一些CPU密集型的事情时,它会变得很短。

    詹姆斯

    8 回复  |  直到 16 年前
        1
  •  1
  •   JesperE    16 年前

    当谈到CPU密集型任务时,Python就显得力不从心,因为Python不是一种非常高效的语言。许多“动态”语言都有这个问题,因为编译器在编译时对程序的假设是有限的。例如,如果在每次调用之间有人替换了对象上的方法,则可能必须每次查找方法调用。

    我建议你看看 Erlang

        2
  •  7
  •   intuited    16 年前

    Extra, extra: Read all about it .

    *:我认为您可能需要使用“类型提示”来获得许多任务所需的Java般的速度。这在Clojure很方便。

        3
  •  4
  •   Pi Delport    16 年前

    如果你真的,真的知道GIL已经成为一个瓶颈,并且你需要在多个处理器上处理数字,那么你需要考虑:

    1. Pyrex / Cython
    2. 不用说,如果您使用的是CPU密集型扩展模块,请确保它们还没有为您释放GIL。
    3. 对于其他几乎所有的东西,使用内置的 multiprocessing 模块。这提供了与 threading ,但为您提供了真实的 进程级并发 :除此之外,这允许您在多台计算机上同时轻松地运行CPU密集型代码,如果问题真的变得很大,这一点非常重要。
        4
  •  3
  •   Niki    16 年前

    boo 的语法是受Python启发的。不过,编程语言有点不同:它是带有类型推断的强类型语言,最重要的特性可能是开放的编译器管道,即创建语法宏的能力(在“宏”一词的LISP意义上,而不是在“预处理器宏”的C意义上)。

    IronPyton 很像蟒蛇,在线程处理方面和其他.NET语言差不多。

        5
  •  2
  •   Alex J. Roberts    16 年前

    Stackless Python 由 EVE online

    无堆叠蟒蛇 是增强的 语言。它允许程序员 无性能编程 以及相关的复杂性问题 用传统的线。这个 Python是一种廉价且轻量级的 方便,如果使用得当, 不仅可以作为 但这样做可以改善计划 结构和便于阅读

        6
  •  1
  •   mykhal    16 年前

    为了克服GIL,可以尝试用jython而不是cpython解释python语言

        7
  •  1
  •   S.Lott    16 年前

    接受暗示。CPU密集型的程序也可以分成多个进程。多个进程和传递状态的管道通常可以具有出色的性能。

    不要为了其他语言而到处乱找,这样做吧。

    1. 在shell中,顶级脚本如下: a.py | b.py | c.py | d.py

    2. sys.stdin 写信给 sys.stdout raw_input() 和 print() 使事情变得简单。

    3. 测量性能。

        8
  •  1
  •   Sasha Chedygov    16 年前

    你可以用 python multiprocessing 它镜像线程的API,但运行单独的进程。可能无法为非posix实现。对于一般CPU密集型问题,您可以尝试 Stackless Python (已提及)或 Pyrex