首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行计算Python / Raspberry Pi

并行计算Python / Raspberry Pi
EN

Stack Overflow用户
提问于 2017-12-21 08:40:37
回答 1查看 2.1K关注 0票数 1

我正在做一个项目,在这个项目中,我需要测量车辆的振动水平(使用高速加速度计采样),并在振动超过某一阈值时“同时”捕捉事件的视频。我希望这两个过程,即数据采集和视频记录同时进行,以便它们在时间上同步。

这两件事我都是在树莓皮上做的。为了实现我的目标,我想到了两个策略。

1)编写函数

( a)数据采集

( b)录像

并以相同的脚本运行它们。

2)或者在运行脚本进行数据采集时,使用对os.system,的调用来运行脚本来捕获事件的视频。

现在我很好奇在Python中函数执行的顺序是什么?所以如果我写

代码语言:javascript
复制
while 1:

   if v_threshold > some_value:

      Acquire_data(); Capture_Video(); 

它们是同时执行还是Capture_Video()只在Acquire_data()完成执行后才开始执行?或者一般情况下,函数是如何用Python (或任何其他编程语言)执行的。

你对实现这一目标的建议是什么?编写函数还是运行2个并行脚本?还是应该使用multiprocessing模块?

谢谢

尼沙尔

EN

回答 1

Stack Overflow用户

发布于 2017-12-21 13:06:47

我将选择选项1,因为您对整个过程有更多的控制(例如,您可以轻松地等待两个子进程完成)。

您的主要设置如下所示:

代码语言:javascript
复制
from multiprocessing import Process
import time

def acquire_data(arg):
    for i in range(5):
        print('acquiring data: {}'.format(arg))
        time.sleep(1.1)

def capture_video():
    for i in range(5):
        print('capturing video')
        time.sleep(1)


if __name__ == '__main__':
    p_data = Process(target=acquire_data, args=('foo',))
    p_video = Process(target=capture_video)
    p_data.start()
    p_video.start()
    p_data.join() # wait until acquire_data is done
    p_video.join() # wait also until capture_video is done

还有:是哪种型号的?因为如果数据获取和视频捕获都占用了100%的cpu,那么您将遇到一个只有一个核心raspberry pi的问题。模型3有4个核心,所以这是很好的。

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

https://stackoverflow.com/questions/47921078

复制
相关文章

相似问题

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