首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Adafruit不适用于多处理

Adafruit不适用于多处理
EN

Stack Overflow用户
提问于 2022-07-02 23:24:46
回答 1查看 76关注 0票数 0

这些误差可以用任何adafruit device.These的例子来重现。我已经测试了几个adafruit产品,他们都是伟大的质量。然而,当与多处理模块一起使用时,它们似乎都出现了相同的问题。脚本不运行并抛出分段错误(内核转储)。脚本运行时使用线程,而不是多进程。

这些办法不起作用:

代码语言:javascript
复制
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()

但这些作品:

代码语言:javascript
复制
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产品的多重加工吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-07-06 06:24:44

试试这个程序。我消除了所有的全局变量,在辅助进程中完全初始化了设备,并通过对__main__的测试来保护程序的入口点。这些都是编写此类程序时的标准实践。

否则,它是与您的程序相同的代码。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72843041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档