Ich möchte einen Prozess haben, der die RPi-Eingabe kontinuierlich überwacht und eine Variable (ich habe eine Warteschlange gewählt) auf True oder False setzt, um den entprellten Wert widerzuspiegeln. Ein anderer Prozess wird dann ein Bild (aus einem Stream) erfassen. Ich habe einen Code geschrieben, nur um zu überprüfen, dass ich Multiprocessing und Signalisierung (die Warteschlange) ok arbeiten kann (ich bin ein Amature Coder ...).Python 3: Multiprocessing, EOFError: EOF beim Lesen einer Zeile
Alles funktioniert gut mit Threading, aber Multiprocessing gibt einen seltsamen Fehler. Speziell 'Multiprocessing, EOFError: EOF beim Lesen einer Zeile'. Code Ausgänge: -
this computer has the following number of CPU's 6
OK, started thread on separate processor, now we monitor variable
enter something, True is the key word:
Process Process-1:
Traceback (most recent call last):
File "c:\Python34\lib\multiprocessing\process.py", line 254, in _bootstrap
self.run()
File "c:\Python34\lib\multiprocessing\process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Peter\Documents\NetBeansProjects\test_area\src\test4.py", line 16, in Wait4InputIsTrue
ValueIs = input("enter something, True is the key word: ")
EOFError: EOF when reading a line
Dieses Modul überwacht die 'Port' (ich bin mit der Tastatur als Eingabe):
#test4.py
from time import sleep
from multiprocessing import Lock
def Wait4InputIsTrue(TheVar, TheLock):
while True:
sleep(0.2)
TheLock.acquire()
#try:
ValueIs = input("enter something, True is the key word: ")
#except:
# ValueIs = False
if ValueIs == "True":
TheVar.put(True)
print("changed TheVar to True")
TheLock.release()
Dieses Modul den Status überwacht, und wirkt auf sie:
Beachten Sie, dass ich versucht habe, einen Versuch hinzuzufügen: zu der Eingabeanweisung in test4.py, in diesem Fall druckt es "geben Sie etwas ein, Wahr ist das Schlüsselwort:" unbegrenzt, ohne ein cr.
Ich habe Lock-in wilden Versuch, es zu beheben, macht keinen Unterschied
jemand eine Idee, warum dies geschieht?