我正在使用 Raspberry Pi (3 B+) 制作数据收集设备,我正在尝试生成一个进程来记录传入的数据并将其写入文件。我有一个写作函数,当我直接调用它时可以正常工作。
然而,当我使用多进程方法调用它时,似乎什么也没发生。我可以在 Linux 的任务监视器中看到该进程确实被生成但没有文件被写入,并且当我尝试将标志传递给它以关闭它时它不起作用,这意味着我最终终止了该进程而什么也没有似乎已经发生了。
我已经从各个方面解决了这个问题,但看不出我做错了什么;还有其他人吗?如果相关,这些是父类中的函数,其中一个函数旨在生成另一个作为线程的函数。
我正在使用的代码:
from datetime import datetime, timedelta
import csv
from drivers.IMU_SEN0 import IMU_SEN0
import multiprocessing, os
class IMU_data_logger:
_output_filename = ''
_csv_headers = []
_accelerometer_headers = ['Accelerometer X','Accelerometer Y','Accelerometer Z']
_gyroscope_headers = ['Gyroscope X','Gyroscope Y','Gyroscope Z']
_magnetometer_headers = ['Bearing']
_log_accelerometer = False
_log_gyroscope= False
_log_magnetometer = False
IMU = None
_writer=[]
_run_underway = False
_process=[]
_stop_value = 0
def __init__(self,output_filename='/home/pi/blah.csv',log_accelerometer = True,log_gyroscope= True,log_magnetometer = True):
"""data logging device
NOTE! Multiple instances of this class should not use the same IMU devices simultaneously!"""
self._output_filename = output_filename
self._log_accelerometer = log_accelerometer
self._log_gyroscope = log_gyroscope
self._log_magnetometer = log_magnetometer
def __del__(self):
# TODO Update this
if self._run_underway: # If there's still a run underway, end it first
self.end_recording()
def _set_up(self):
self.IMU = IMU_SEN0(self._log_accelerometer,self._log_gyroscope,self._log_magnetometer)
self._set_up_headers()
答案:对于在这里跟进的任何人,事实证明问题在于我使用了 VS Code 调试器,该调试器显然不适用于多处理,并且以某种方式阻止了生成的进程的成功。
叮当猫咪
相关分类