[作品] 3“万里”树莓派小车——python学习(定时任务)

lb8820265   2021-11-29 20:13 楼主

如果用Python搭建一个小车项目,那么定时任务是必不可少的。Python中定时主要有以下4种方法。

  1. while循环中使用sleep 
  2. threading模块中的Timer
  3. sched模块
  4. 定时框架APScheduler

上述4种方法的实现与特点网上很多介绍,结论就是APScheduler最好,而我主要的关注点为定时器的准确性和能够实现的最短定时是多少。

编辑如下代码(需要提前安装好APScheduler包),周期定时1ms,并输出当前时间与时间差。

import time
import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
pre_time=0;
def func():
    global pre_time
    now = time.time()
    cha=now-pre_time
    pre_time=now
    print(now," ",cha)
scheduler = BlockingScheduler()
scheduler.add_job(func, 'interval', seconds=0.001, id='main')
scheduler.start()

image-20211129001801-1.png

      发现在运行的时候会经常报错,而且时间误差很大,都是偏大,将周期定时改为10ms,结果如下。

image-20211129001801-2.png       运行起来没有了错误,但是仍然有±3%左右的误差。这个误差一个需要实时控制的项目中也是致命的,因此使用python中定时器来做实时定时任务是失败的。

我想这主要是和python执行代码效率低有关,Linux本身不是一个实时操作系统也是一个原因。

问题

Python在定时器方面这么拉胯,那是不是C语言会好一些呢?

源码

GitHub:https://github.com/wanli-car/Examples/blob/master/Python/Timer_APS.py

Gitee:https://gitee.com/wanli-car/Examples/blob/master/Python/Timer_APS.py

QQ:252669569

回复评论 (2)

1 来自 2楼 okhxyyo 

"万里"树莓派小车汇总贴:

lb8820265的“万里”树莓派小车开源分享 - DIY/开源硬件专区 - 电子工程世界-论坛 (eeworld.com.cn)

 

目录:

 

“万里”树莓派小车开张贴 

1“万里”树莓派小车——建立项目仓库

2“万里”树莓派小车——python学习(Thonny的使用)

3“万里”树莓派小车——python学习(定时任务)

4“万里”树莓派小车——C++学习(编译与运行,geany使用)

5“万里”树莓派小车——wiringPi学习(延时与线程模拟定时器)

6“万里”树莓派小车——wiringPi学习(PWM与外部中断模拟定时器)

7“万里”树莓派小车——RPi.GPIO学习(PWM与外部中断模拟定时器)

8“万里”树莓派小车——socket学习(本机通讯)

9“万里”树莓派小车——socket学习(TCP两机通讯)

10“万里”树莓派小车——socket学习(UDP两机通讯)

11“万里”树莓派小车——socket学习(Android发送)

12“万里”树莓派小车——socket学习(Android收发)

13“万里”树莓派小车——配件准备

14“万里”树莓派小车——电机驱动学习

15“万里”树莓派小车——光电编码器学习(正反转的判断)

16“万里”树莓派小车——光电编码器学习(转速的获取)

17“万里”树莓派小车——VSCode学习(编译和调试)

18“万里”树莓派小车——Makefile学习

19“万里”树莓派小车——VSCode学习(多C文件链接调试)

20“万里”树莓派小车——电机控制学习(控制速度)

21“万里”树莓派小车——电机控制学习(4轮速度控制)
22“万里”树莓派小车——手机遥控电机转动

23“万里”树莓派小车——无屏幕连接树莓派

24“万里”树莓派小车——树莓派64位系统bullseye跑分测试

25“万里”树莓派小车——纳姆轮控制

26“万里”树莓派小车——程序开机启动

27“万里”树莓派小车——固定和获取树莓派IP地址

28“万里”树莓派小车——小车组装

29“万里”树莓派小车——直行偏向问题与新控制模式

30.“万里”树莓派小车——第一阶段完成展示(从零开始介绍)

玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
点赞  2022-3-21 13:43

汇总(已更新12篇):lb8820265的“万里”树莓派小车开源分享

https://bbs.eeworld.com.cn/thread-1187606-1-1.html

点赞  2021-12-1 12:02
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复