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

Micropython - Share variable in threads for funcions defined in diferent .py (files)

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

  1. Wi-Fi连接网页交互
  2. Neopixel LED 灯条

我想做的是通过网页交互 (1) 来改变 Neopixel led 的东西 (2)。 这两个过程都在线程中。问题是,我如何将变量从过程 (1) 更改为 (2)? 我尝试使用全局变量,如果线程进程及其函数都在同一个文件 (.py) 中,它确实有效,但如果我这样做但将函数放在不同的 .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 中声明全局变量来解决它,然后我将这个文件导入到我想使用的地方。此外,在我导入它的地方,我 "re" 在内部声明了同名变量(我想让它可见)。