Micropython-在线程中为different.py(文件)中定义的函数共享变量

Micropython-在线程中为different.py(文件)中定义的函数共享变量,python,multithreading,global-variables,esp32,micropython,Python,Multithreading,Global Variables,Esp32,Micropython,我有一个带有Micropython固件的ESP32,上面有两个线程进程: Wi-Fi连接与网页交互 Neopixel led条带材料 我想做的是通过网页(1)进行交互,以更改Neopix led的内容(2)。 两个进程都在线程中。问题是,如何将变量从过程(1)更改为过程(2)? 我尝试使用全局变量,如果线程进程及其函数都在同一个文件(.py)中,它就可以工作,但是如果我也这样做,但将函数放在different.py中,它就不能工作 这项工作如下: import _thread from time

我有一个带有Micropython固件的ESP32,上面有两个线程进程:

  • Wi-Fi连接与网页交互
  • Neopixel led条带材料
  • 我想做的是通过网页(1)进行交互,以更改Neopix led的内容(2)。 两个进程都在线程中。问题是,如何将变量从过程(1)更改为过程(2)? 我尝试使用全局变量,如果线程进程及其函数都在同一个文件(.py)中,它就可以工作,但是如果我也这样做,但将函数放在different.py中,它就不能工作

    这项工作如下:

    import _thread
    from time import sleep
    
    var_global = 0
    
    def thread_Teste1():
      global var_global
      while True:
        sleep(1.5)
        var_global += 1
        print("Teste1: ", var_global)
    
    def thread_Teste2():
      global var_global
      while True:
        sleep(1)
        var_global += 1
        print("Teste2: ", var_global)
    
    # Thread
    try:
      _thread.start_new_thread(thread_Teste1, ())
      _thread.start_new_thread(thread_Teste2, ())
    except Exception:
      import traceback
      print(traceback.format_exc())
    
    while True:
        sleep(1000)
    
    但是,如果我将“while True”代码放入分离文件.py中的一个函数中,那么它不起作用,我的意思是,它看不到全局变量(我尝试了许多方法编码,但都不起作用)

    关于如何使用不同文件.py中的代码在不同线程中更改变量值的任何建议? 我找到了关于队列的信息,但它在Micropython上不起作用


    谢谢

    我通过在一个单独的文件.py中声明全局变量来解决这个问题,然后将这个文件导入到我想要使用的地方。另外,在我导入它的地方,我用相同的名称“重新”声明了里面的变量(我想是为了让它可见)。

    需要记住的一点是,MicroPython文档中有这样一条评论:“这个模块是高度实验性的,它的API还没有完全解决,也没有在本文档中进行描述。”这是不可能的。。。您是否考虑过使用文件存储值并检索值?你也应该看看BTree,希望对你有所帮助!另外,请阅读有关ISR以及中断与主程序之间共享数据的部分。你也可以使用这种风格。感谢您的评论@Patrick,我使用全局变量解决了这个问题,现在我了解了通过线程实现的方法。我在一个单独的文件.py中声明了全局变量,并将其导入到要使用的位置