2

私はpythonプログラムを書いています。Windowsで動作するように、プログラムには重いスレッドとI/Oがあり、I/Oでソケットを多用してリモートの場所からデータを送受信します。それ以外に、いくつかの文字列操作があります正規表現を使用します。

私の質問は次のとおりです。たとえば、Java や C# と比較して、Python はそのようなプログラムに最適なプログラミング言語ですか? 上記の説明により適した別の言語はありますか?

4

2 に答える 2

2

興味深い質問です。ソケットを扱う Python モジュールは、基盤となる OS 機能を直接ラップします。したがって、特定の操作では、ラッパー言語によって速度の違いが見られる可能性はほとんどありません。

Python の速度の問題に気付くのは、ストリーム内のすべての文字を見るなど 、非常にタイトなループに関与している場合です。

送信しているデータの量を示していません。膨大な量の I/O を維持する必要があるソリューションを実行している場合を除き、python で問題なく動作する可能性があります。Pythonでnginxまたはmemcachedまたはredisを実装する...あまり良い考えではありません。

そしていつものように... ベンチマーク。それが十分に速いなら、なぜ変更するのですか?

PS。あなたのプログラマーは、おそらくPythonでより速くそれを成し遂げるでしょう!

于 2012-05-24T22:10:29.663 に答える
1

要件は次のとおりです。

  1. ウィンドウで作業する。
  2. プログラムのスレッド化と I/O が重い
  3. データの送受信に I/O でソケットを多用する
  4. 正規表現を使用した文字列操作がいくつかあります。

このタスクに最適な言語を断定するのが難しい理由は、ほとんどすべての言語が要件に適合するためです。

  1. Windows: ノートのすべての言語
  2. スレッドの多用: C#、Java、C、C++、Haskell、Scala、Clojure、Erlang。処理ベースのスレッドまたはその他の回避策: Ruby、Python、およびその他の解釈された言語で、真に細粒度の同時実行性を持たないもの。
  3. ソケット: 重要なすべての言語
  4. 正規表現: 注目すべきすべての言語

最も興味深い制約は、大規模な同時 IO を実行する必要があることです。これは、ボトルネックがコンテキストの切り替え、スレッドのコスト、および複数のコアでスレッド プールを実行できるかどうかにあることを意味します。スケーリングによっては、複数のコアを簡単に使用できる軽量スレッドを備えたコンパイル済み言語を使用することをお勧めします。これにより、リストは C++、Haskell、Erlang、Java、Scala に絞り込まれます。フォークされたプロセスを使用することで、Python のグローバル インタープリター ロックを回避できる可能性があります。

于 2012-05-25T15:27:57.173 に答える