物联网AI MicroPython学习之语法 _thread 多线程

本文介绍了Python的_thread模块在物联网(IoT)环境中的使用,包括创建新线程、设置栈大小、管理线程以及使用互斥锁进行同步。示例代码展示了如何创建两个线程共享和交替使用一个互斥锁,确保对资源的安全访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学物联网,来万物简单IoT物联网!!在这里插入图片描述

_thread 介绍

  • 模块功能:
    _thread 模块提供创建新线程的方法,并提供互斥锁。

接口说明

get_ident - 获取当前线程ID

  • 函数原型:_thread.get_ident()
  • 返回值:
    获取当前线程号。
  • 示例:
_thread.get_ident() 
1073495904

stack_size - 设置创建新线程时所使用的栈大小

  • 函数原型:_thread.stack_size(size)
  • 参数说明:
参数类型必选参数?说明
sizeint创建新线程使用的栈大小(以字节为单位),默认为8448字节,最小8192字节。

start_new_thread - 创建一个新线程

  • start_new_thread - 函数原型:_thread.start_new_thread(function, args)
  • 参数说明:
参数类型必选参数?说明
function函数指针新线程的入口函数
args元组传入新线程的入口函数的参数列表
  • 返回值:
    返回线程的id。

stop_thread - 根据线程id删除一个线程

  • 函数原型:_thread.stop_thread(thread_id)
  • 参数说明:
参数类型必选参数?说明
thread_idint创建线程时返回的线程id
thread_id为0则删除当前线程。不可删除主线程。

allocate_lock - 创建一个互斥锁对象

  • 函数原型:_thread.allocate_lock()
  • 返回值:
    返回互斥锁对象
  • 示例:
lock = _thread.allocate_lock()

acquire - 获取锁

  • 函数原型:lock.acquire()
  • 返回值 成功获得锁返回True,否则返回False。

release - 释放锁

  • 函数原型:lock.release()

locked - 返回锁的状态

  • 函数原型:lock.locked()
  • 返回值:
    返回锁的状态,True表示被某个线程占用,False则表示没有被占用。

delete_lock - 删除锁

  • 函数原型:_thread.delete_lock(lock)
  • 示例:
import _thread 
import utime 
import urandom 
gLock = None # 线程1处理函数 
def th(name):     
    while True:         # 休眠随机时间         
        utime.sleep(urandom.random())         # 等待获取互斥锁         
		gLock.acquire()         # 打印当前系统时间         
		print(name, "lock acquired at ", utime.ticks_ms())         # 休眠随机时间         
		utime.sleep(urandom.random())         # 释放互斥锁         
		gLock.release() 
if __name__ == '__main__':     #创建互斥锁     
    gLock = _thread.allocate_lock()     # 获得互斥锁     
	gLock.acquire()     # 创建线程1     
	_thread.start_new_thread(th, ["th1"])     # 创建线程2     
	_thread.start_new_thread(th, ["th2"])     # 休眠1秒     
	utime.sleep(1)     # 释放互斥锁     
	gLock.release()          
	while True:         
        utime.sleep(1)
  • 示例输出:
th1 lock acquired at  6978 
th2 lock acquired at  7965 
th1 lock acquired at  8949 
th2 lock acquired at  9405 
th1 lock acquired at  10083 
th2 lock acquired at  10459 
th1 lock acquired at  11171 
th2 lock acquired at  11980 
th1 lock acquired at  12970
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值