|
1 | 1 | import asyncio |
2 | 2 | import datetime |
3 | 3 | import multiprocessing |
4 | | -import queue |
5 | 4 | import time |
6 | 5 | from abc import ABC, abstractmethod |
7 | 6 | from collections import defaultdict, deque |
|
39 | 38 | from streamable.util.constants import NO_REPLACEMENT |
40 | 39 | from streamable.util.futuretools import ( |
41 | 40 | FDFOAsyncFutureResultCollection, |
42 | | - FDFOOSFutureResultCollection, |
43 | 41 | FIFOAsyncFutureResultCollection, |
44 | | - FIFOOSFutureResultCollection, |
45 | 42 | FutureResult, |
46 | 43 | FutureResultCollection, |
47 | 44 | ) |
@@ -601,11 +598,13 @@ def _context_manager(self) -> ContextManager: |
601 | 598 | @abstractmethod |
602 | 599 | def _launch_task(self, elem: T) -> "Future[Union[U, ExceptionContainer]]": ... |
603 | 600 |
|
604 | | - # factory method |
605 | | - @abstractmethod |
606 | 601 | def _future_result_collection( |
607 | 602 | self, |
608 | | - ) -> FutureResultCollection[Union[U, ExceptionContainer]]: ... |
| 603 | + ) -> FutureResultCollection[Union[U, ExceptionContainer]]: |
| 604 | + if self.ordered: |
| 605 | + return FIFOAsyncFutureResultCollection(asyncio.get_running_loop()) |
| 606 | + else: |
| 607 | + return FDFOAsyncFutureResultCollection(asyncio.get_running_loop()) |
609 | 608 |
|
610 | 609 | async def _next_future( |
611 | 610 | self, |
@@ -676,17 +675,11 @@ def _safe_transformation( |
676 | 675 | return ExceptionContainer(e) |
677 | 676 |
|
678 | 677 | def _launch_task(self, elem: T) -> "Future[Union[U, ExceptionContainer]]": |
679 | | - return self.executor.submit( |
680 | | - self._safe_transformation, self.transformation, elem |
681 | | - ) |
682 | | - |
683 | | - def _future_result_collection( |
684 | | - self, |
685 | | - ) -> FutureResultCollection[Union[U, ExceptionContainer]]: |
686 | | - if self.ordered: |
687 | | - return FIFOOSFutureResultCollection() |
688 | | - return FDFOOSFutureResultCollection( |
689 | | - multiprocessing.Queue if self.via == "process" else queue.Queue |
| 678 | + return cast( |
| 679 | + "Future[Union[U, ExceptionContainer]]", |
| 680 | + asyncio.get_running_loop().run_in_executor( |
| 681 | + self.executor, self._safe_transformation, self.transformation, elem |
| 682 | + ), |
690 | 683 | ) |
691 | 684 |
|
692 | 685 |
|
@@ -745,14 +738,6 @@ def _launch_task(self, elem: T) -> "Future[Union[U, ExceptionContainer]]": |
745 | 738 | asyncio.get_running_loop().create_task(self._safe_transformation(elem)), |
746 | 739 | ) |
747 | 740 |
|
748 | | - def _future_result_collection( |
749 | | - self, |
750 | | - ) -> FutureResultCollection[Union[U, ExceptionContainer]]: |
751 | | - if self.ordered: |
752 | | - return FIFOAsyncFutureResultCollection(asyncio.get_running_loop()) |
753 | | - else: |
754 | | - return FDFOAsyncFutureResultCollection(asyncio.get_running_loop()) |
755 | | - |
756 | 741 |
|
757 | 742 | class ConcurrentAMapAsyncIterator(_RaisingAsyncIterator[U]): |
758 | 743 | def __init__( |
|
0 commit comments