マルチプロセッシングを介して2つのプロセスを開始していますが、これは正常に機能しています。私が抱えている唯一の問題は、これら2つのプロセスからのprintステートメントとdebugステートメントです。
バックグラウンドのように、REPLを使用してプロセスを開始することが望まれます。ただし、これを実行できません。私は常にデバッグステートメントを取得するため、REPLを使用できなくなります。これは私がプロセスを呼び出す方法です:
processes = [
Process(target=start_viewer, args=()),
Process(target=start_server, args=(live, amount, fg))
]
for p in processes:
p.start()
プロセスを「ミュート」する方法、またはバックグラウンドでそれらを取得する方法についてのアイデアはありますか?
私があなたを正しく理解しているなら、あなたはいずれかのプロセスからの印刷を見せたくないでしょう。これは、Pythonインタープリターの出力をリダイレクトすることで実現できます。sys.stdout = open("/dev/null", 'w')
「ミュート」するプロセスに追加します。
以下の完全な実例。
from multiprocessing import Process
from time import sleep
import sys
def start_viewer():
sys.stdout = open("/dev/null", 'w')
while True:
print("start_viewer")
sleep(1)
def start_server():
while True:
print("start_server")
sleep(1)
if __name__ == '__main__':
processes = [
Process(target=start_viewer, args=()),
Process(target=start_server, args=())
]
for p in processes:
p.start()
/dev/null
印刷物をどこにも渡さないようなものであることに注意してください。保存したい場合は、テキストファイルを使用できます。また、マルチOSサポートを実現するには、を使用する必要がありますos.devnull
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加