2017-02-03 29 views
-2

こんにちは私はSocketServerモジュールを使ってサーバー/クライアントモデルを持っています。サーバーの仕事は、クライアントからテスト名を受け取り、テストを開始することです。 サブプロセスモジュールを使用してテストが開始されます。 私は、サーバがクライアントに応答し続け、新しいジョブをリストやキューに積み重ねて1つずつ起動させたいのですが、唯一の制限は、サーバが現在テストを開始していないことです。Python。スレッディング

おかげ

+1

あなたの質問がありますか? – ForceBru

+0

あなたの求人情報は、SOの「求人」部分に入れてください。 –

+0

[ツアー](// stackoverflow.com/tour)と[ヘルプセンター](// stackoverflow.com/help)のドキュメントをお読みください。特に、[良い質問をする方法](// stackoverflow.com/help/how-to-ask)と[トピックに関する質問](// stackoverflow.com/help/on)を読んでください。 -topic)ここにSO。 –

答えて

0

あなたは、新しいプロセスを開始するためのモジュール

multiprocessing
を使用することができます。サーバー側では、現在実行中のプロセスを参照する変数があります。 SocketServerを実行し、要求を受け入れてリストに格納することはできます。 1秒おきに(または何が必要なのか)、別のスレッドでは、isAlive()を呼び出して現在のプロセスが停止しているかどうかをチェックします。それが死んでいる場合は、リスト上で次のテストを実行するだけです。

もう1つの方法は、3番目のスレッド(チェックするスレッド)で、プロセスから.join()を呼び出して、現在のプロセスのコードの次の行を呼び出します死んでいる。そうすれば、1秒ごとに何度もチェックする必要はなく、より効率的です。

0

何をしたい場合がありますことです。

  1. は1
  2. によってキュー1からテストの名前を読んで、別のスレッドでQueue
  3. に入れ、サーバソケットにテスト名を取得します。プロセスを実行して終了するまで待機するcommunicate()
  4. 新しいテストのためにポーリングキューを保持し、テスト名が利用可能であれば手順2,3を繰り返します。
  5. サーバーは引き続き受信していますテスト名をキューに入れる
関連する問題