Skip to content

Commit 62864a1

Browse files
committed
Fix IndexError when submitting buffered futures
1 parent 8c3361d commit 62864a1

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

core.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,21 @@ def __init__(self, submit_size, *args, **kwargs):
3333
def submit(self, fn, *args, **kwargs):
3434
self._buffer.append((fn, args, kwargs))
3535

36-
def __submit_from_buffer(self):
37-
fn, args, kwargs = self._buffer.pop(0)
38-
return self._executor.submit(fn, *args, **kwargs)
36+
def __submit_from_buffer(self, count=1):
37+
futures = list()
38+
while count and self._buffer:
39+
fn, args, kwargs = self._buffer.pop(0)
40+
futures.append(self._executor.submit(fn, *args, **kwargs))
41+
count -= 1
42+
return futures
3943

4044
def as_completed(self):
41-
submitted = [self.__submit_from_buffer() for _ in range(self._submit_size)]
45+
submitted = self.__submit_from_buffer(self._submit_size)
4246
while self._buffer and not self._shutdown:
4347
done, _ = concurrent.futures.wait(submitted, return_when=concurrent.futures.FIRST_COMPLETED)
4448
for future in done:
4549
submitted.remove(future)
46-
submitted.append(self.__submit_from_buffer())
50+
submitted += self.__submit_from_buffer()
4751
yield future
4852

4953
def shutdown(self, wait=True):

0 commit comments

Comments
 (0)