Micropython-在线程中为different.py(文件)中定义的函数共享变量
我有一个带有Micropython固件的ESP32,上面有两个线程进程: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
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中声明了全局变量,并将其导入到要使用的位置