不同.py(文件)中定义的函数的线程中的MicroShare变量



我有一个带有Microython固件的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中的代码在不同线程中更改变量的值,有什么建议吗我发现了Queue,但它在Micropython上不起作用。。。

谢谢!

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

最新更新