Python 线程调度
Python支持在程序中使用多个线程。多线程程序可以独立地执行多个子任务,从而实现任务的并行执行。
Python解释器将Python线程请求映射到POSIX/pthreads或Windows线程。因此,与普通线程类似,Python线程由主机操作系统处理。
然而,Python解释器不支持线程调度。因此,无法使用Python解释器实现线程优先级、调度方案和线程抢占。Python线程的调度和上下文切换取决于主机调度器的处理。
Python确实在标准库中以sched模块的形式提供了一些任务调度的支持。它可以用于创建机器人和其他监控和自动化应用程序。 sched 模块实现了一个通用的事件调度器,用于在指定的时间运行任务。它提供了类似于Windows或Linux中的任务调度器的工具。
调度器类在内置模块 sched 中定义。
调度器类中定义的方法包括:
- scheduler.enter() - 可以安排事件在延迟后运行,或者在特定时间运行。使用enter()方法来安排延迟执行的事件。
-
scheduler.cancel() - 从队列中移除事件。如果事件不在队列中,该方法会引发ValueError错误。
-
scheduler.run(blocking=True) - 运行所有已安排的事件。
可以安排事件在延迟后运行,或者在特定时间运行。要安排延迟执行的事件,请使用enter()方法,该方法接受四个参数。
- 表示延迟的数字
-
优先级值
-
要调用的函数
-
函数的参数元组
示例1
此示例安排了两个不同的事件 –
它将生成以下 输出 −
示例2
让我们来看一个例子来更好地理解这个概念-
将会产生以下的 输出 –