这些误差可以用任何adafruit device.These的例子来重现。我已经测试了几个adafruit产品,他们都是伟大的质量。然而,当与多处理模块一起使用时,它们似乎都出现了相同的问题。脚本不运行并抛出分段错误(内核转储)。脚本运行时使用线程,而不是多进程。
这些办法不起作用:
import time
import board
import adafruit_bno055
import threading
import multiprocessing
fpsFilt = 0
timeStamp = 0
i2c = board.I2C()
sensor = adafruit_bno055.BNO055_I2C(i2c)
def test():
while True:
print("Quaternion: {}".format(sensor.quaternion))
Gps = multiprocessing.Process(target=test)
Gps.start()但这些作品:
import time
import board
import adafruit_bno055
import threading
import multiprocessing
fpsFilt = 0
timeStamp = 0
i2c = board.I2C()
sensor = adafruit_bno055.BNO055_I2C(i2c)
def test():
while True:
print("Quaternion: {}".format(sensor.quaternion))
Gps = threading.Thread(target=test)
Gps.start()有什么方法可以使用adafruit产品的多重加工吗?谢谢。
发布于 2022-07-06 06:24:44
试试这个程序。我消除了所有的全局变量,在辅助进程中完全初始化了设备,并通过对__main__的测试来保护程序的入口点。这些都是编写此类程序时的标准实践。
否则,它是与您的程序相同的代码。
import time
import board
import adafruit_bno055
import threading
import multiprocessing
def test():
i2c = board.I2C()
sensor = adafruit_bno055.BNO055_I2C(i2c)
while True:
print("Quaternion: {}".format(sensor.quaternion))
def main():
Gps = multiprocessing.Process(target=test)
Gps.start()
if __name__ == "__main__":
main()
while True:
time.sleep(1.0)https://stackoverflow.com/questions/72843041
复制相似问题