Javaを使用して分散アルゴリズムBirman-Schiper-Stephenson
を実装しました。私はこのプログラムを実行するたびに、3つの端末を開き、コマンドをjava Server 2
、java Client 0 2
、java Client 1 2
というように3つの端末に分けて入力する必要があります。Pythonでシェルコマンドを使用してマルチスレッドJava RMIを実装する方法は?
私はこのプロセスを自動的にしたい、私は自動的にこれらのJavaファイルを実行するスクリプトを書くためにpythonを使用しようとします。私は以下のコードを試しました:
import os
import thread
thread.start_new_thread(os.system('java Server 2'))
try:
thread.start_new_thread(os.system('java Client 0 2'))
thread.start_new_thread(os.system('java Client 1 2'))
except:
print "Error: unable to start thread"
しかし、マルチスレッドプロセスには何か問題があります。私はServer process
を終了しなければならず、Client process
を起動することができます。 Pythonでこのマルチプロセスをシェルコマンドで実装する方法を教えてもらえますか?
ご返信ありがとうございます。私はこのメソッドを試してみたところ、 'java.rmi.server.ExportException:ポートはすでに使用中です:1099;ネストされた例外は次のとおりです。 \t java.net.BindException:2回目にスクリプトを実行すると、アドレスはすでに使用中(バインドに失敗しました)です。これは、プロセスを自分でkillするために 'for java_procs:p.kill()'のようなものを追加する必要があるのでしょうか? –
@Coding_Rabbitサーバを起動する必要があります。クライアントは、すべてのクライアントが 'wait'で終了するのを待ちます。その後、サーバーを停止します - このサーバーをPythonスクリプトで開始および停止させたい場合。 – birryree