Skip to content

Commit 9822860

Browse files
committed
Refine add callback function
1 parent 56fe0bc commit 9822860

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

charm4py/threads.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,12 @@ def running(self):
141141

142142
def done(self):
143143
print(
144-
self.ready(),
145-
self.cancelled(),
146-
isinstance(
144+
"Ready:", self.ready(),
145+
"Cancelled:", self.cancelled(),
146+
"Failed:", isinstance(
147147
self.error,
148148
Exception),
149-
self.running())
149+
"Running:", self.running())
150150
return self.ready() or self.cancelled() or isinstance(self.error, Exception)
151151

152152
def result(self, timeout=None):
@@ -174,16 +174,16 @@ def _run_callback(self, callback):
174174
print(e, file=stderr)
175175

176176
def add_done_callback(self, callback):
177+
self.callbacks.append(callback)
178+
# Status may have changed while appending. Run
179+
# any remaining callbacks
177180
if self.done():
178-
self._run_callback(callback)
179-
else:
180-
self.callbacks.append(callback)
181-
# Status changed while appending. Run
182-
# any remaining callbacks
183-
if self.done():
184-
while len(self.callbacks) > 0:
181+
while len(self.callbacks) > 0:
182+
try:
185183
callback = self.callback.pop()
186184
self._run_callback(callback)
185+
except IndexError as e:
186+
break
187187

188188
def set_running_or_notify_cancel(self):
189189
if self.cancelled():

0 commit comments

Comments
 (0)