是否可以与Google计算引擎实例进行实时通信?

2024-04-27 22:46:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的笔记本电脑上运行一个程序(Gazebo模拟器),并将图像数据流发送到GCE实例,在那里它将通过目标检测网络运行,并以近乎实时的方式发送回我的笔记本电脑。这样的设置可能吗?你知道吗

我现在最好的想法是,对于每一张图片:

  1. 在我的个人计算机上将图像另存为JPEG
  2. 将JPEG流式传输到Cloud Storage bucket
  3. 从我的GCE实例访问存储桶并将文件传输到实例
  4. 在我的python脚本中,将JPEG图像转换为numpy数组并通过对象检测网络运行
  5. 将检测结果保存在文本文件中并传输到云存储桶
  6. 从我的笔记本电脑访问存储桶并下载检测结果文件
  7. 将检测结果文件转换为numpy数组以进行进一步处理

这似乎需要很多步骤,我很好奇是否有办法加快速度,比如减少保存和加载操作的数量,或者以更好的格式传输图像。你知道吗


Tags: 文件实例图像程序网络numpy目标方式
1条回答
网友
1楼 · 发布于 2024-04-27 22:46:49

如果你的问题是“有没有可能建立这样一个系统并实时执行这些操作?”我想答案是肯定的。如果你的问题是“我怎样才能减少做上述工作的步骤数”,那么我不确定我能帮上什么忙,我会听从这里的一位专家的意见,迫不及待地想听到答案!你知道吗

我已经实现了一个系统,我认为它类似于您所描述的外汇交易算法研究(例如,从我的笔记本电脑上传数据到存储器,计算引擎工作人员提取数据并对其进行处理,将结果发布回存储器,我从我的笔记本电脑下载编译的结果)。你知道吗

我使用了Google PubSub体系结构-如果您已经读过这篇文章,请道歉。它允许程序之间的近实时消息传递。例如,你可以在你的笔记本电脑上有代码循环,扫描一个文件夹,寻找新的图像。当它们出现时,它会自动将文件上传到一个bucket中,一旦它们进入bucket中,它就可以向实例发送一条消息,告诉它们那里有新的文件要处理,或者您可以使用Google存储bucket的“更改通知”功能。实例可以完成工作,将结果发送回存储器,并向运行在膝上型计算机上的代码发送一个通知,说明工作已经完成,结果可以提取。你知道吗

请注意,我为上面的项目设置了这个,遇到了一些问题,以至于我放弃了PubSub。原因是PubSub的Python客户机库只支持“异步”消息拉取,这似乎意味着订阅者将从队列中拉取多条消息并并行处理它们。有一些特性可以帮助管理内置在API中的消息的“流控制”,但即使实现了它们,我也无法让它按我想要的方式工作。对于我的特定应用程序,我希望按顺序处理所有内容,一次处理一个文件,因为对于我来说,很重要的一点是,我清楚实例在做什么,以及它的顺序。google search、StackOverflow和google groups上有几个线程讨论了解决方法,它们使用队列、类、为特定实例分配特定任务等,我尝试过,但即使是这些也给我带来了问题。其中一些链接是:

Run synchronous pull in PubSub using Python client APIpubsub problems pulling one message at a time如果你喜欢,还有很多!你知道吗

你可能会发现,如果一个图像的处理速度相对较快,那么顺序就不太重要,你也不介意一个并行处理多个事情的实例,因为我的问题并不真正适用于你的情况。你知道吗

仅供参考,我最后只是在我的“worker实例”上做了一个简单的循环,每隔30秒扫描一次“task list”bucket或其他什么来查找要处理的新文件,但显然这并不是您最初寻找的实时方法。祝你好运!你知道吗

相关问题 更多 >