Introduction to the sched module of the Python standard library

零下一度
Release: 2017-07-20 18:06:39
Original
1910 people have browsed it

Event Scheduling

 schedThe content of the module is very simple, only one class is defined. It is used as a general event scheduling module.

 class sched.scheduler(timefunc, delayfunc)This class defines a general interface for scheduling events. It requires two parameters to be passed in from the outside. timefunc is one without For parameters that return time type numbers (commonly used such as time in the time module), delayfunc should be a function that requires one parameter to call, is compatible with the output of timefunc, and functions to delay multiple time units function (commonly used such as sleep of the time module).

The following is an example:

import sched, time

s = sched.scheduler(time.time, time.sleep) # 生成调度器def print_time():print "From print_time", time.time()def print_some_times():print time.time()
s.enter(5, 1, print_time, ()) 
# 加入调度事件# 四个参数分别是:# 间隔事件(具体值决定与delayfunc, 这里为秒);# 优先级(两个事件在同一时间到达的情况);# 触发的函数;# 函数参数;s.enter(10, 1, print_time, ())# 运行s.run()print time.time()if __name__ == '__main__':
print_some_times()
Copy after login

The output you see is that the first event is executed every 5 seconds, and the second event is executed every 10 seconds:

1499259731.99From print_time 1499259736.99From print_time 1499259741.991499259741.99
Copy after login

In multi-threaded scenarios, there will be thread safety issues, and the run() function will block the main thread. The official recommendation is to use the threading.Timer class instead:

import timefrom threading import Timerdef print_time():print "From print_time", time.time()def print_some_times():print time.time()
Timer(5, print_time, ()).start()
Timer(10, print_time, ()).start()
time.sleep(11) # 阻塞主线程,等待调度程序执行完毕,再执行后面内容print time.time()if __name__ == '__main__':
print_some_times()
Copy after login

Scheduler object methods

The scheduler object has the following methods or properties:

  • scheduler.enterabs(time, priority, action, argument)

Add an event, the time parameter should be the same as the passed to the constructor timefuncNumeric type compatible with the return value of the function. Events arriving at the same time will be executed in order priority.

The execution event is actually the execution of action(argument). argument must be a sequence containing action parameters.

The return value is an event, which can be used to cancel the event later (see cancel()).

  • scheduler.enter(delay, priority, action, argument)

Schedule an event to delay delay time units. Except for time, other parameters, meanings and return values ​​are the same as those of enterabs(). In fact, the internal enterabs is used to be called by enter.

  • scheduler.cancel(event)

Delete events from the queue. If the event is not an event currently in the queue, this method will run a ValueError.

  • scheduler.empty()

Determine whether the queue is empty.

  • scheduler.run()

Run all scheduled events. This function will wait (using the delayfunc() function passed to the constructor) and then execute events until there are no more scheduled events.

Any action or delayfunc can throw an exception. In both cases, the scheduler will maintain a consistent state and propagate exceptions. If an exception is caused by action, run() will not continue to be executed.

  • scheduler.queue

Read-only attribute, returns a list of upcoming events (sorted by arrival events), each event has time, priority, #namedtuple composed of ##action and argument.

The above is the detailed content of Introduction to the sched module of the Python standard library. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!