这些错误可以在任何硬件设备上重现。这些是GPS的例子。我已经测试了几种水果产品,它们的质量都很好。然而,当与多处理模块一起使用时,它们似乎都出现了同样的问题。脚本不运行并抛出分割错误(核心转储)。该脚本使用线程运行,但不支持多进程。
这些不工作:
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()
是否有办法使用多加工的水果产品?谢谢。
试试这个程序。我已经取消了所有的全局变量,初始化设备完全在二级过程,和保护程序的测试__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)