首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多处理队列:游戏表面失效

多处理队列:游戏表面失效
EN

Stack Overflow用户
提问于 2015-06-11 19:52:30
回答 1查看 219关注 0票数 0

我想使用多处理来分离游戏中的两个任务:从网络摄像头中提取图像和在屏幕上显示图像。我之所以想这么做,是因为

  • 我想要花哨的图像处理
  • 我希望将网络摄像头轮询从屏幕和用户输入中分离出来。

并希望分离两者的时间延迟,理想的选择负载。使用线程,我没有问题,将图像从一个线程发送到另一个线程。然而,我得到了一个滞后的形象。我想测试使用多处理是否可以减少图像的延迟。

这是一个问题:我收到一个错误后,将图像从相机进程发送到屏幕进程。从队列中提取图像后,使用

代码语言:javascript
复制
imgmsg = img_q.get() 

我检查图像的大小

代码语言:javascript
复制
imgmsg.img.get_width()

如前所述,对于线程,这将返回正确的图像宽度。但是,通过多处理,我得到了以下错误

代码语言:javascript
复制
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

所以图像似乎在队列中丢失了吗?我试着读到这一点,当通过队列传输更大的物体时,似乎会出现问题。这是正确的吗?我该如何规避或解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-13 09:55:12

在发送到另一个进程之前,先序列化映像(使用pygame.image.tostring/pygame.image.fromstring)。

那应该管用。这样,您只发送图像本身的数据,而不是一个Surface实例(因此它完全独立于吡游)。

注意,还可以通过对字符串调用.encode("zlib")/.decode("zlib")来进一步压缩该字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30790191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档