From cfa1705a88c5c5c274caede5fe3a056af090de81 Mon Sep 17 00:00:00 2001 From: Jan Pochyla Date: Mon, 2 Oct 2017 11:42:56 +0200 Subject: [PATCH] trezor/loop: optimization Re-cycle queue of paused tasks by clear()ing it rather than pop()ing it out of the dict. --- src/trezor/loop.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/trezor/loop.py b/src/trezor/loop.py index 69ea4784..d23318d8 100644 --- a/src/trezor/loop.py +++ b/src/trezor/loop.py @@ -53,7 +53,7 @@ def unschedule(task): def pause(task, iface): - tasks = _paused.get(iface, None) + tasks = _paused.get(iface) if tasks is None: tasks = _paused[iface] = [] tasks.append(task) @@ -94,9 +94,11 @@ def run(): if io.poll(_paused, msg_entry, delay): # message received, run tasks paused on the interface - msg_tasks = _paused.pop(msg_entry[0], ()) - for task in msg_tasks: - _step(task, msg_entry[1]) + msg_tasks = _paused.get(msg_entry[0]) + if msg_tasks is not None: + for task in msg_tasks: + _step(task, msg_entry[1]) + msg_tasks.clear() else: # timeout occurred, run the first scheduled task if _queue: