2009-08-10 14 views
4

C/C++ APIの代わりにPythonで私のアプリケーションのネットワーク関連の機能をプログラミングすることを検討しています。ネットワークの意図された使用は、アプリケーションの2つのインスタンス間でテキストメッセージを渡すことです。プレイヤーのポジションをネットワーク経由で可能な限り頻繁に渡すゲームと同様です。提案が必要 - Pythonでのネットワーキング - 良いアイデアですか?

Pythonソケットモジュールは十分で成熟しているようですが、開発の後半で問題になる可能性のあるPythonモジュールの制限があるかどうか確認したいと思います。

あなたはPythonのソケットモジュールをどう思いますか:

  1. それは、生産品質のソフトウェアのための十分な信頼性と高速ですか?
  2. 私のアプリで問題になる可能性のある既知の制限はありますか?通常のクライアントサーバーメッセージング以外の複雑なネットワークが必要ですか?

#1に答えるために事前のおかげで、

ポール

答えて

1

は、私は他のもののうち、EVEオンライン(MMO)は、そのサーバーのコード用のPythonのバリアントを使用していることを知っています。

+0

* EveはStackless Pythonを使用しています。 – Kevin

1

EVEオンラインで使用されているPythonはStacklessPython(http://www.stackless.com/)ですが、私が理解する限り、それらはタスクレットやその他のものを使用してスレッドを実装する方法に使用しています。しかし、Python自体がMMOのようなものを40k人の人とオンラインで扱うことができるので、何でもできると思います。

この悪質な回答ではなく、本当にあなたの質問への答えではなく、以前の答えに加えて。

アラン。

3

PythonはC/C++(あなたが本当に自分自身を傷つけたい場合はダイレクトメモリアクセスでさえ)でできることはほとんど何でもできる成熟した言語です。

非常に短時間で美しいコードを書くことができます。このコードは最初から読み取り可能であり、読みやすくなります(1年後に戻った後も何をするかは分かります) )。

Pythonの欠点は、コードがやや遅くなることです。 「ある程度は遅すぎるかもしれない。したがって、通常の方法は、Pythonでできるだけ多く書くことです。これは、アプリをメンテナンス可能にするためです。最終的には、スピードの問題にぶつかる可能性があります。それはC.

中のアプリの一部を書き換えることを検討するための時間となり、このアプローチの主な利点は以下のとおりです。

  1. あなたは既に実行中のアプリケーションを持っています。 PythonのコードをCに翻訳するのは、一から書くよりはるかに簡単です。
  2. 既に実行中のアプリケーションがあります。 Pythonの小さな部分をC言語に翻訳した後で、その小さな部分をテストするだけで済み、アプリケーションの残りの部分(変更されていない部分)を使ってそれを実行することができます。
  3. 価格を前払いしないでください。 Pythonの速度が十分速ければ、オプションの最適化を行う必要はありません。
  4. PythonはCよりはるかに強力です。Pythonの各行は、100行または1000行のCでも同じことができます。
9

ネットワーキング用のPythonエンジンであるTwistedをチェックしてください。 TCP、UDP、SSL/TLS、マルチキャスト、Unixソケット、多数のプロトコル(HTTP、NNTP、IMAP、SSH、IRC、FTPなどを含む)のビルトインサポートを持っています

関連する問題