を読むときにEOF私は絶えずRPI入力を監視し、プロセスを持っていることを望む、とデバウンス値を反映するために、TrueまたはFalseに(私はキューを選択している)変数を設定します。別のプロセスは、(ストリームから)イメージをキャプチャします。私はちょうど私がマルチプロセッシングおよびシグナリング(キュー)(私は...アマチュアコーダだ)OK作業を取得することができますチェックするためにいくつかのコードを書かれています。のPython 3:マルチプロセッシングは、例外EOFError:ライン
これは、すべてのスレッドで正常に動作しますが、マルチプロセッシングは奇妙なエラーを与えています。特に 'マルチプロセッシング、EOFError:行を読むときのEOF'。コード出力: -
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
このモジュールは、「ポート」を監視し(私は、入力として、キーボードを使用しています):
#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()
このモジュールは、ステータスを監視し、それに作用する:
私が試して追加しようとしている#test5.py
if __name__ == "__main__":
from multiprocessing import Process, Queue, Lock, cpu_count
from time import sleep
from test4 import Wait4InputIsTrue
print("this computer has the following number of CPU's", cpu_count())
LockIt = Lock()
IsItTrue = Queue(maxsize = 3)
Wait4 = Process(target = Wait4InputIsTrue, args = (IsItTrue, LockIt))
Wait4.start()
print("OK, started thread on separate processor, now we monitor variable")
while True:
if IsItTrue.qsize():
sleep(0.1)
print("received input from separate thread:", IsItTrue.get())
注:それは印刷を続け、その場合にはtest4.pyで入力文に「何かを入力するには、Trueがキーワードです:」無期限に、CRなし。
私は、それを修正するために野生の試みでロックを追加しましたに違い誰でもなぜこれが起こっている任意のアイデアを行うものではありませんか?