Context manager for parralel func #276
1 changed files with 12 additions and 0 deletions
|
@ -1,10 +1,22 @@
|
||||||
import itertools
|
import itertools
|
||||||
from concurrent.futures import Future, ThreadPoolExecutor
|
from concurrent.futures import Future, ThreadPoolExecutor
|
||||||
|
from contextlib import contextmanager
|
||||||
from typing import Callable, Collection, Optional, Union
|
from typing import Callable, Collection, Optional, Union
|
||||||
|
|
||||||
MAX_WORKERS = 50
|
MAX_WORKERS = 50
|
||||||
|
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def parallel_workers_limit(workers_count: int):
|
||||||
|
global MAX_WORKERS
|
||||||
|
original_value = MAX_WORKERS
|
||||||
|
MAX_WORKERS = workers_count
|
||||||
|
try:
|
||||||
|
yield
|
||||||
|
finally:
|
||||||
|
MAX_WORKERS = original_value
|
||||||
|
|
||||||
|
|
||||||
def parallel(
|
def parallel(
|
||||||
fn: Union[Callable, list[Callable]],
|
fn: Union[Callable, list[Callable]],
|
||||||
parallel_items: Optional[Collection] = None,
|
parallel_items: Optional[Collection] = None,
|
||||||
|
|
Loading…
Reference in a new issue