マルチプロセッシングを使用して、pygame で 2 つのタスクを分離したいと考えています。ウェブカメラから画像を取得し、画面に画像を表示します。私がこれをやりたい理由は、
- 派手な画像処理がしたい
- Web カメラのポーリングを画面とユーザー入力から分離したい
両方の時間遅延を分離し、理想的には負荷を最適化します。スレッドを使用すると、あるスレッドから別のスレッドに画像を送信する際に問題はありません。ただ、ラグいイメージがあります。マルチプロセッシングを使用して画像の遅延を軽減できるかどうかをテストしたいと思います。
問題は次のとおりです。カメラ プロセスからスクリーン プロセスに画像を送信した後、エラーが発生します。を使用してキューから画像をプルした後
imgmsg = img_q.get()
画像のサイズを確認します
imgmsg.img.get_width()
前述のように、スレッドを使用すると、正しい画像幅が返されます。ただし、マルチプロセッシングでは次のエラーが発生します
Process Process-1: Traceback (most recent call last): File "/usr/lib/python3.2/multiprocessing/process.py", line 267, in
_bootstrap
self.run() File "/usr/lib/python3.2/multiprocessing/process.py", line 116, in run
self._target(*self._args, **self._kwargs) File "test_photoBoothMultiProc.py", line 21, in consumer
photoBoothScreen.screenThread(in_q, img_q) File "/home/pi/pyBooth/thread_photoBoothScreen.py", line 68, in screenThread
print(imgmsg.img.get_width()) pygame.error: display Surface quit
それで、画像がキューで失われたようですか?これを読み込もうとしましたが、キューを介して大きなオブジェクトを送信するときに問題があるようです。これは正しいです?これを回避または修正するにはどうすればよいですか?