diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2012-12-29 19:46:37 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2012-12-29 19:46:37 (GMT) |
commit | d07db96ab6942acef2e95194043d6d30ac48604e (patch) | |
tree | b9c1ebe46e0b43c9d33c85c7c12d2f75cf2fa1f0 | |
parent | 1147f824388354ec9870da238141b4d33bba8210 (diff) | |
download | cpython-d07db96ab6942acef2e95194043d6d30ac48604e.zip cpython-d07db96ab6942acef2e95194043d6d30ac48604e.tar.gz cpython-d07db96ab6942acef2e95194043d6d30ac48604e.tar.bz2 |
Issue #16640: Run less code under a lock in sched module.
-rw-r--r-- | Lib/sched.py | 11 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
2 files changed, 7 insertions, 6 deletions
diff --git a/Lib/sched.py b/Lib/sched.py index ccf8ce9..9a82a89 100644 --- a/Lib/sched.py +++ b/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. |