我正在做一个项目,我需要测量由于过往车辆引起的振动水平(使用加速度计高速采样)并在振动超过某个阈值时捕获事件“同时”的视频。我希望这两个过程,即数据采集和视频记录同时进行,以便它们在时间上同步。
我在覆盆子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
模块?
谢谢
静止的
我会选择选项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个核心所以这很好。