私は独立したプロセスをPythonで作成しようとしています。これらのプロセスは私が複数のインスタンスを持っていて、異なる引数でインスタンス化したいPythonスクリプトです。 は、単にからループのため、私はsubprocess.Popen()を呼び出していますが、引数で相応に変化:複数のpythonプロセス/同じ名前のデーモン(異なるargs)を生成する
subscriber.pyでfor d in mylist:
subprocess.Popen(['./subscriber.py', d.arg1, a.arg2, d.arg3])
、私は、コードを持っている「daemonizes」あるいは各種recipes あたりのようなプロセスこれに、私はまたして私のsubscriber.pyを起動しようとしている:
for d in mylist:
p = multiprocessing.Process(target=subscriber.start,
args=(d.arg1, d.arg2, d.arg3))
p.daemon=True
p.start()
私のスクリプトは、共通ログファイルへの書き込みをPythonのログを使用しています。
どちらの方法でも、ループの最後の反復からのプロセスだけが実際に実行されていることになります。私が必要とするのは、これらのバックグラウンドデーモンに「永遠に」実行させることですが、1つしかインスタンスを取得できません! [編集]重要なのは、呼び出しスレッドを終了させて、実行中のデーモンを残しておきたいのです。
私はこれまでと同様にstackoverflowや他の場所でgoogledしています。おそらく私のpythonの初心者 - ness ..私のアプローチは完全に間違っていますか?
環境: - Pythonの-2.7、UbuntuのLinuxの
変数を再割り当てする代わりにプロセスのリストを作成しようとしましたか?例えば。 – Serdalis
しかし、私は呼び出し側のスレッドを終了させ、たくさんの実行中のデーモンを残しておきたいと思います(p.append(target = subscriber.start、args =(d.arg1、d.arg2、d.arg3)))後ろに。これは、マルチプロセッシングが子プロセスの実行を許可していないように見えるため、私がPopen()に傾いている理由です。 – lusito75