Ich möchte 2 Prozesse zur gleichen Zeit ausführen. 1 druckt jede Sekunde "a" und der andere fragt nach einer Eingabe und wenn die Eingabe "Y" ist, hört der erste Prozess auf, "a" zu drucken. Ich bin ziemlich neu in Python und ich kann es nicht herausgefunden ...Konnte Eingabe nicht verwenden, wenn ich in Python multiplizieren
Dies ist, was ich mit so weit kam:
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()
Dies ist die Fehlermeldung erhalte ich:
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
Das 'multiprocessing' Modul schließt absichtlich die Standardeingabe aller Prozesse schafft: es sonst unbestimmt sein würde, wie zu dem man tatsächlich erhalten jede Eingabe. Sie könnten dies beheben, indem Sie die Eingangsschleife im Hauptprogramm ausführen, aber Ihr Code würde immer noch nicht funktionieren - Ihr globales 'go' wird NICHT zwischen Prozessen geteilt. Sie müssten 'multiprocessing.Value' oder einen der verschiedenen anderen Mechanismen verwenden, die explizit zwischen Prozessen ausgetauscht werden. – jasonharper