并行计算Python / Raspberry Pi

问题描述 投票:1回答:1

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

我在覆盆子pi上做两件事。为了实现我的目标,我有两个策略。

1)写一个函数

a)数据采集 b)录制视频

并在同一个脚本中运行它们。

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

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

while 1:

   if v_threshold > some_value:

      Acquire_data(); Capture_Video(); 

它们是同时被执行还是Capture_Video()只在Acquire_data()完成执行后开始?或者一般来说,如何在Python(或任何其他编程语言)中执行函数。

你有什么建议来实现这个目标?编写函数或运行2个并行脚本?或者我应该使用multiprocessing模块?

谢谢

静止的

python-3.x parallel-processing raspberry-pi
1个回答
1
投票

我会选择选项1,因为您可以更好地控制整个过程(例如,您可以轻松等待两个子过程完成)

您的主要设置如下所示:

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,那么你将遇到只有一个核心覆盆子pi的问题。型号3有4个核心所以这很好。

© www.soinside.com 2019 - 2024. All rights reserved.