与其他语言相比,Python套接字I / O性能

时间:2012-05-24 22:03:26

标签: python performance sockets programming-languages io

我正在写一个python程序,在windows上工作,程序有很多线程和I / O,它在I / O中大量使用套接字从远程位置发送和接收数据,除此之外,它有使用正则表达式进行一些字符串操作。

我的问题是:性能明智,与例如Java或C#相比,python是这种程序的最佳编程语言吗?是否有其他语言更符合上述描述?

2 个答案:

答案 0 :(得分:2)

有趣的问题。处理套接字的python模块直接包装底层操作系统功能。因此,在给定的操作中,根据包装语言,您不太可能看到任何速度差异。

如果您参与非常紧凑的循环,就像查看流中的每个字符一样,您会注意到python的速度问题。

您没有指出要发送的数据量。除非您正在进行必须保持大量I / O的解决方案,否则python可能会做得很好。在python中实现nginx或memcached或redis ......不是一个好主意。

一如既往......基准。如果它足够快,那么为什么要改变?

PS。程序员可能会在python中更快地完成它!

答案 1 :(得分:1)

您的要求是:

  1. 在Windows上工作;
  2. 该程序具有较强的线程和I / O
  3. 它在I / O中大量使用套接字来发送和接收数据
  4. 它使用正则表达式进行一些字符串操作。
  5. 很难明确说明这项任务的最佳语言是几乎所有语言都符合您的要求。

    1. Windows:所有语言的语言
    2. 大量使用线程:C#,Java,C,C ++,Haskell,Scala,Clojure,Erlang。基于处理的线程或其他解决方案:Ruby,Python和其他没有真正细粒度并发的解释语言。
    3. 套接字:所有注释语言
    4. Regexes:所有注释语言
    5. 最有趣的限制是需要进行大规模并发IO。这意味着您的瓶颈将是上下文切换,线程成本以及您是否可以在多个核心上运行线程池。根据您的扩​​展,您可能希望使用编译语言,并使用轻量级线程,可以轻松使用多个核心。这将列表缩减为C ++,Haskell,Erlang,Java,Scala。您可以通过使用分叉进程来解决Python中的全局解释器锁,它只是不会那么精细。