Micropython - 在线程中为不同 .py(文件)中定义的函数共享变量
Micropython - Share variable in threads for funcions defined in diferent .py (files)
我有一个带有 Micropython 固件的 ESP32,上面有两个线程进程:
- Wi-Fi连接网页交互
- 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" 在内部声明了同名变量(我想让它可见)。
我有一个带有 Micropython 固件的 ESP32,上面有两个线程进程:
- Wi-Fi连接网页交互
- 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" 在内部声明了同名变量(我想让它可见)。