1
2つのプロセスを同時に実行したいです。 1は1秒ごとに印刷を続け、もう1つは入力を要求し、入力が 'Y'であれば、最初のプロセスは 'a'の印刷を停止します。私は、Pythonにかなり新しいですし、私はそれを把握することはできません...Pythonでマルチプロセッシング時に入力を使用できません
これは私がこれまでに思い付いたものです:
from multiprocessing import Process
import time
go = True
def loop_a():
global go
while go == True:
time.sleep(1)
print("a")
def loop_b():
global go
text = input('Y/N?')
if text == 'Y':
go = False
if __name__ == '__main__':
Process(target=loop_a).start()
Process(target=loop_b).start()
これは私が取得していますエラーメッセージです:
Process Process-2:
Traceback (most recent call last):
File "C:\Users\Tip\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 249, in _bootstrap
self.run()
File "C:\Users\Tip\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "F:\ProgrammingTK\PROGproject\test.py", line 15, in loop_b
text = input('Y/N?')
EOFError: EOF when reading a line
'multiprocessing'モジュールが意図的にそれが作成したすべてのプロセスの標準入力をクローズ:どちら実際に受信するように、それ以外の場合は不定になりますが任意の入力。メインプログラムで入力ループを実行することでこれを修正できますが、コードはまだ動作しません。グローバルな 'go'はプロセス間で共有されません。 'multiprocessing.Value'や、プロセス間で明示的に共有される他のさまざまなメカニズムのいずれかを使用する必要があります。 – jasonharper