サーバーのような方法で外部スクリプトを開いたままにするために、Python でサブプロセスを使用しようとしています。外部スクリプトは、最初にモデルを読み込みます。これが完了すると、STDIN 経由で要求を受け入れ、処理された文字列を STDOUT に返します。
これまでのところ、私は試しました
tokenizer = subprocess.Popen([tokenizer_path, '-l', lang_prefix], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
ただし使えない
tokenizer.stdin.write(input_string+'\n')
out = self._tokenizer.stdout.readline()
stdout.read()
サブプロセスを使用して input_strings を繰り返し処理するために、 orを使用しても、 out は空になりますstdout.readline()
。ただし、STDOUTを読み取る前に標準入力を閉じると機能しtokenizer.stdin.close()
ますが、これはサブプロセスを閉じます。これは、別のリクエストを送信する前に外部スクリプト全体を再度リロードする必要があるため、必要なものではありません。
サブプロセスを閉じて再度開くことなく、Pythonでサーバーのような方法で使用する方法はありますか?