Micropython基于ESP32的多线程开发

本文学习如何使用ESP32开发板来进行多线程的开发。
环境

        ESP32 + Thonny IDE

单任务

        我们先来看看单任务单线程,从上到下依次执行,先是每隔1秒打印1个1,然后是每隔1秒打印1个2
import time
 
for i in range(3):
    print("1")
    time.sleep(1)
    
for i in range(3):
    print("2")
    time.sleep(1)
输出为
Micropython基于ESP32的多线程开发

多任务

        我们再来看看多任务,多任务感觉上去程序可以同时执行多个不同的代码,例如多个while循环同时执行。
import _thread
import time
import sys
import machine
 
def test1(*args, **kwargs):
    for i in range(3):
        print("1")
        time.sleep(1)
 
def test2(*args, **kwargs):
    for i in range(3):
        print("2")
        time.sleep(1)
 
# 此处创建2个线程
thread_1 = _thread.start_new_thread(test1, (1,))
thread_2 = _thread.start_new_thread(test2, (2,))
说明:_thread.start_new_thread
第1个参数,函数的引用,理解为线程要到哪里执行代码
第2个参数,元组,要给线程执行函数的实参,必须是元组
第3个参数(可有可无),命名参数,给线程执行函数的实参。如:1=9。
输出为:
Micropython基于ESP32的多线程开发

MicroPython中的多线程

        我们可以使用_thread来在ESP32中开发多进程的代码。如下:
import _thread
import time
import sys
import machine
 
# ---------- 这是一个线程要执行的代码 ------------
def test1(*args, **kwargs):
    while True:
        print("1")
        time.sleep(1)
 
# ---------- 这是另一个线程要执行的代码 ------------
def test2(*args, **kwargs):
    while True:
        print("2")
        time.sleep(1)
 
# ---------- 这里创建线程 ------------
thread_1 = _thread.start_new_thread(test1, (1,))
thread_2 = _thread.start_new_thread(test2, (2,))
 
# ---------- 这是主线程要执行的代码 ------------
while True:
    print("3")
    time.sleep(1)

运行结果:
Micropython基于ESP32的多线程开发

六、建议

        在ESP开发板中,如果不是必须不建议使用多线程,因为我们的开关板存储和执行性能有限,多线程会带来大的开销,所以开发过程中我们要合理的安排。
————————————————
原文链接:https://blog.csdn.net/zhusongziye/article/details/128063353
- 本文内容来自网络,如有侵权,请联系本站处理。

2024-02   阅读(719)   评论(0)
 标签: 创客 ESP32 MicroPython

涨知识
LED点阵屏

LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。

评论:
相关文章
Arduino-ESP32与ESP-IDF的版本对应表

Arduino-ESP32与ESP-IDF的版本对应表。


Arduino-ESP32文件系统全解析:SPIFFS、LittleFS、SD卡操作

Arduino-ESP32提供了多种文件系统解决方案,本文将深入解析SPIFFS、LittleFS和SD卡三种主流存储方案,帮助你做出最佳选择。


ESP32-P4-WIFI6开发板

ESP32-P4-WIFI6-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 BLE 5 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等。


ESP-Hosted 入门介绍 &使用指南

ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。


设备上云太麻烦?ESP-Hosted一站触达!

ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


ESP32 利用 SPI 连通 TFT 彩屏

本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。


在Micropython下使用ESPNow功能进行数据传输

本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。


用 ESP32-S3 打造多功能 USB Dongle

ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。


利用 ESP32-S3 和 CSI 技术打造智能家居

ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。