我正在做一个项目,在这个项目中,我需要测量车辆的振动水平(使用高速加速度计采样),并在振动超过某一阈值时“同时”捕捉事件的视频。我希望这两个过程,即数据采集和视频记录同时进行,以便它们在时间上同步。
这两件事我都是在树莓皮上做的。为了实现我的目标,我想到了两个策略。
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模块?
谢谢
尼沙尔
发布于 2017-12-21 13:06:47
我将选择选项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,那么您将遇到一个只有一个核心raspberry pi的问题。模型3有4个核心,所以这是很好的。
https://stackoverflow.com/questions/47921078
复制相似问题