Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
3c80ce45
Commit
3c80ce45
authored
Dec 29, 2012
by
Serhiy Storchaka
Browse files
Options
Browse Files
Download
Plain Diff
Issue #16641: Fix default values of sched.scheduler.enter arguments were modifiable.
parents
d1ced9e8
c04957bf
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
23 additions
and
11 deletions
+23
-11
Doc/library/sched.rst
Doc/library/sched.rst
+14
-9
Lib/sched.py
Lib/sched.py
+6
-2
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Doc/library/sched.rst
View file @
3c80ce45
...
...
@@ -36,19 +36,22 @@ Example::
>>> import sched, time
>>> s = sched.scheduler(time.time, time.sleep)
>>> def print_time(): print("From print_time", time.time())
>>> def print_time(a='default'):
... print("From print_time", time.time(), a)
...
>>> def print_some_times():
... print(time.time())
... s.enter(5, 1, print_time, ())
... s.enter(10, 1, print_time, ())
... s.enter(10, 1, print_time)
... s.enter(5, 2, print_time, argument=('positional',))
... s.enter(5, 1, print_time, kwargs={'a': 'keyword'})
... s.run()
... print(time.time())
...
>>> print_some_times()
930343690.257
From print_time 930343695.274
From print_time 930343700.273
From print_time 930343695.274 positional
From print_time 930343695.275 keyword
From print_time 930343700.273 default
930343700.276
.. _scheduler-objects:
...
...
@@ -59,7 +62,7 @@ Scheduler Objects
:class:`scheduler` instances have the following methods and attributes:
.. method:: scheduler.enterabs(time, priority, action, argument=
[]
, kwargs={})
.. method:: scheduler.enterabs(time, priority, action, argument=
()
, kwargs={})
Schedule a new event. The *time* argument should be a numeric type compatible
with the return value of the *timefunc* function passed to the constructor.
...
...
@@ -67,8 +70,10 @@ Scheduler Objects
*priority*.
Executing the event means executing ``action(*argument, **kwargs)``.
*argument* must be a sequence holding the parameters for *action*.
*kwargs* must be a dictionary holding the keyword parameters for *action*.
Optional *argument* argument must be a sequence holding the parameters
for *action* if any used.
Optional *kwargs* argument must be a dictionary holding the keyword
parameters for *action* if any used.
Return value is an event which may be used for later cancellation of the event
(see :meth:`cancel`).
...
...
@@ -80,7 +85,7 @@ Scheduler Objects
*kwargs* parameter was added.
.. method:: scheduler.enter(delay, priority, action, argument=
[]
, kwargs={})
.. method:: scheduler.enter(delay, priority, action, argument=
()
, kwargs={})
Schedule an event for *delay* more time units. Other than the relative time, the
other arguments, the effect and the return value are the same as those for
...
...
Lib/sched.py
View file @
3c80ce45
...
...
@@ -50,6 +50,8 @@ class Event(namedtuple('Event', 'time, priority, action, argument, kwargs')):
def
__gt__
(
s
,
o
):
return
(
s
.
time
,
s
.
priority
)
>
(
o
.
time
,
o
.
priority
)
def
__ge__
(
s
,
o
):
return
(
s
.
time
,
s
.
priority
)
>=
(
o
.
time
,
o
.
priority
)
_sentinel
=
object
()
class
scheduler
:
def
__init__
(
self
,
timefunc
=
_time
,
delayfunc
=
time
.
sleep
):
...
...
@@ -60,19 +62,21 @@ class scheduler:
self
.
timefunc
=
timefunc
self
.
delayfunc
=
delayfunc
def
enterabs
(
self
,
time
,
priority
,
action
,
argument
=
[],
kwargs
=
{}
):
def
enterabs
(
self
,
time
,
priority
,
action
,
argument
=
(),
kwargs
=
_sentinel
):
"""Enter a new event in the queue at an absolute time.
Returns an ID for the event which can be used to remove it,
if necessary.
"""
if
kwargs
is
_sentinel
:
kwargs
=
{}
with
self
.
_lock
:
event
=
Event
(
time
,
priority
,
action
,
argument
,
kwargs
)
heapq
.
heappush
(
self
.
_queue
,
event
)
return
event
# The ID
def
enter
(
self
,
delay
,
priority
,
action
,
argument
=
[],
kwargs
=
{}
):
def
enter
(
self
,
delay
,
priority
,
action
,
argument
=
(),
kwargs
=
_sentinel
):
"""A variant that specifies the time as a relative time.
This is actually the more commonly used interface.
...
...
Misc/NEWS
View file @
3c80ce45
...
...
@@ -200,6 +200,9 @@ Core and Builtins
Library
-------
-
Issue
#
16641
:
Fix
default
values
of
sched
.
scheduler
.
enter
arguments
were
modifiable
.
-
Issue
#
16504
:
IDLE
now
catches
SyntaxErrors
raised
by
tokenizer
.
Patch
by
Roger
Serwy
.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment