summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiampaolo Rodola' <g.rodola@gmail.com>2012-03-15 12:05:41 (GMT)
committerGiampaolo Rodola' <g.rodola@gmail.com>2012-03-15 12:05:41 (GMT)
commita4e018889ac3537e10b48811b4be6356e633b8a0 (patch)
treeef43ce4ff4f5bd657b7dd17e234bb1a388c7e69b
parent17160fd6d6d7850294a9a465a3e5e399e5028bb6 (diff)
downloadcpython-a4e018889ac3537e10b48811b4be6356e633b8a0.zip
cpython-a4e018889ac3537e10b48811b4be6356e633b8a0.tar.gz
cpython-a4e018889ac3537e10b48811b4be6356e633b8a0.tar.bz2
(sched) when run() is invoked with blocking=False return the deadline of the next scheduled call in the scheduler; this use case was suggested in http://bugs.python.org/issue1641#msg149453
-rw-r--r--Doc/library/sched.rst3
-rw-r--r--Lib/sched.py5
2 files changed, 5 insertions, 3 deletions
diff --git a/Doc/library/sched.rst b/Doc/library/sched.rst
index 957bdd3..d6c86c7 100644
--- a/Doc/library/sched.rst
+++ b/Doc/library/sched.rst
@@ -109,7 +109,8 @@ Scheduler Objects
on until there are no more scheduled events.
If *blocking* is False executes the scheduled events due to expire soonest
- (if any) and then return.
+ (if any) and then return the deadline of the next scheduled call in the
+ scheduler (if any).
Either *action* or *delayfunc* can raise an exception. In either case, the
scheduler will maintain a consistent state and propagate the exception. If an
diff --git a/Lib/sched.py b/Lib/sched.py
index bd1f427..a89a118 100644
--- a/Lib/sched.py
+++ b/Lib/sched.py
@@ -97,7 +97,8 @@ class scheduler:
def run(self, blocking=True):
"""Execute events until the queue is empty.
If blocking is False executes the scheduled events due to
- expire soonest (if any) and then return.
+ expire soonest (if any) and then return the deadline of the
+ next scheduled call in the scheduler.
When there is a positive delay until the first event, the
delay function is called and the event is left in the queue;
@@ -129,7 +130,7 @@ class scheduler:
now = timefunc()
if now < time:
if not blocking:
- return
+ return time - now
delayfunc(time - now)
else:
event = pop(q)