mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
Issue #16640: Run less code under a lock in sched module.
This commit is contained in:
parent
1147f82438
commit
d07db96ab6
2 changed files with 7 additions and 6 deletions
11
Lib/sched.py
11
Lib/sched.py
|
@ -71,10 +71,10 @@ class scheduler:
|
|||
"""
|
||||
if kwargs is _sentinel:
|
||||
kwargs = {}
|
||||
event = Event(time, priority, action, argument, kwargs)
|
||||
with self._lock:
|
||||
event = Event(time, priority, action, argument, kwargs)
|
||||
heapq.heappush(self._queue, event)
|
||||
return event # The ID
|
||||
return event # The ID
|
||||
|
||||
def enter(self, delay, priority, action, argument=(), kwargs=_sentinel):
|
||||
"""A variant that specifies the time as a relative time.
|
||||
|
@ -82,9 +82,8 @@ class scheduler:
|
|||
This is actually the more commonly used interface.
|
||||
|
||||
"""
|
||||
with self._lock:
|
||||
time = self.timefunc() + delay
|
||||
return self.enterabs(time, priority, action, argument, kwargs)
|
||||
time = self.timefunc() + delay
|
||||
return self.enterabs(time, priority, action, argument, kwargs)
|
||||
|
||||
def cancel(self, event):
|
||||
"""Remove an event from the queue.
|
||||
|
@ -165,4 +164,4 @@ class scheduler:
|
|||
# the actual order they would be retrieved.
|
||||
with self._lock:
|
||||
events = self._queue[:]
|
||||
return map(heapq.heappop, [events]*len(events))
|
||||
return map(heapq.heappop, [events]*len(events))
|
||||
|
|
|
@ -200,6 +200,8 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #16640: Run less code under a lock in sched module.
|
||||
|
||||
- Issue #16165: Fix sched.scheduler.run() method was block a scheduler for
|
||||
other threads.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue