刷题
- 一些使用方法
- 如何安装包(库)
- 打开文件
- time库
- 时间库的应用
- 关于定时器Timer库
- _thread多线程
- 创建线程
- 联系我们
一些使用方法
如何安装包(库)
工具-包管理
搜索你需要的包安装。
打开文件
菜单 文件-打开,可选择打开电脑上的文件和设备上的文件。
time库
时间库的应用
import time
LTime=time.localtime()
print(LTime)
#localtime()
#输出 (2022, 4, 13, 16, 10, 18, 2, 103)
# 年 月 日 时 分 秒 周 第几天
# 周一~周日用0~6表示
#第几天是指这一年的第几天
print(time.mktime(LTime))
#.mktime()
#localtime()的反函数,把时间自转换成 2000 年 1 月 1 日以来的秒数
time.sleep(0.5)
print("1")
time.sleep_ms(200)
print("2")
time.sleep_us(200000)
print("3")
#相等于arduino内delay()
#sleep()可使用浮点数
#其它两个分别为毫秒和微秒
print(time.time())
print(time.ticks_ms())
print(time.ticks_us())
print(time.ticks_cpu())
#返回运行时间,单位分别为秒/毫秒/微秒/CPU(不太理解)
print(time.ticks_ms())
print(time.ticks_add(time.ticks_ms(), -100))
# 实际就是一个时间加法
deadline = time.ticks_add(time.ticks_ms(), 2000)
while time.ticks_diff(deadline, time.ticks_ms()) > 0:
pass
#ticks_diff()对比时间差
print(time.ticks_add(0, -1))
# 输出时间最大数1073741823ms
关于定时器Timer库
ESP32有0~3共4个定时器,初始化时指定。
如指定 其它数据也行。比如-1,为什么呢。以我的理解些参数他只取最低两位表示0~3。。-1所有的位都是1。所以其实是3,可以自己验证。
#n=0~3
tm=Timer(n)
init()
- period:周期,定时时长
- mode:模式 PERIODIC(周期重复)/ONE_SHOT(单次)
- callback :回调函数,这里用的lambda.
tm.init(period=1000, mode=Timer.PERIODIC, callback=lambda t:print('0'))
即使执行一次,定时器的也会持续的工作。如想结束使用deinit()
使用value()可读取定时器当前的值。
from machine import Timer
import time
#计时器1回调,带一个参数为定时器本体。
def CB(t):
print("定时器1 触发")
# 初始化
tim0 = Timer(0)
tim1 = Timer(1)
# 1秒后执行
tim0.init(period=1000, mode=Timer.ONE_SHOT, callback=lambda t:print("执行一次"))
time.sleep(1.5)
# 关闭定时器
tim0.deinit()
# 定时器2周期执行
tim1.init(period=2040, mode=Timer.PERIODIC, callback=CB)
while True:
print("计时器1当前值:{}".format(tim1.value()))
time.sleep_ms(500)
_thread多线程
内置简单线程管理
创建线程
_thread.start_new_thread ( function, args[, kwargs] )
参数说明:
function - 线程函数。
args - 传递给线程函数的参数,必须是元组类型。
kwargs - 可选参数
import _thread
import time
# 为线程定义一个函数
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print ("%s: %s" % ( threadName, time.ctime(time.time()) ))
# 创建两个线程
try:
_thread.start_new_thread( print_time, ("Thread-1", 2, ) )
_thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print ("Error: 无法启动线程")
while 1:
pass
输出:
Thread-1: 2
Thread-2: 4
Thread-1: 4
Thread-1: 6
Thread-2: 8
Thread-1: 8
Thread-1: 10
Thread-2: 12
Thread-2: 16
Thread-2: 20