1

私はPythonには新しく、「仕事中」を学ぶことを試みています。そして私はこれを行う必要があります。Python 2.xで一度に複数のrawソケットを接続して処理する

未処理のソケット接続で3台のサーバーと通信する必要があります。私はそれを順番に簡単に行うことができます。しかし、私はこれらの3台のサーバーと一度に通信できる方法があるかどうか疑問に思っていましたか? 3台のサーバーのIPアドレスはすべて異なります。

基本的には次の操作を実行しようとするが、1つのステップで:また、並列化するために、後でs.sendall() & s.recv()を必要としている

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((HOST1, PORT1)) 
s.connect((HOST2, PORT1)) 
s.connect((HOST3, PORT1)) 

答えて

1

あなたが唯一のリスニングスレッドがある場合は、複数のソケット上で待機するように選択し使用することができますし、それらのいずれかがデータを返すとき起こさますが:

https://docs.python.org/2/library/select.html

0

それは知らなくても、知識の富を規定するのは難しいですあなたのサーバプロトコルに関する情報、あなたが聞いているもの、それに何をするつもりなのかなど、他の追加情報がないと想像することはできますが、マルチプロセッシングによって通信が処理されるシナリオです。 )ここでプールの各メンバーはIPアドレスにマッピングされ、3つすべてが同じマルチプロセッシングにデータを送信します.Queue()はループスレッドによって評価されます。

追加の詳細情報はありますか?

あなたの仕事で最高の運勢!

+2

ここでは、複数の*プロセス*は必要ありません。プロセスはスレッドよりも重いので、それ以外の場合はすべてスレッドが優先されます。 – kfx

+0

問題はタグ付きマルチプロセッシングであり、誰もそのような解決方法を規定していなかったので、私はそれを追加しました。つまり、kfxはプロセスの産出によって発生するオーバーヘッドについて完全に正しいです。 –

0

asyncioモジュールをご覧ください。

これはPython 3を必要としますが、複数の実行コンテキストを持つシングルスレッドアプリケーションを作成することができます。スレッドとイベントベースの同時実行性を最大限に引き出すことができます。

+0

申し訳ありませんが、これはPython 2.xでなければなりません – eecs

関連する問題