Skip to content

Commit 2c24b4e

Browse files
committed
lazy import fastprogress
1 parent b59d33a commit 2c24b4e

3 files changed

Lines changed: 24 additions & 7 deletions

File tree

fastcore/_modidx.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,7 @@
582582
'fastcore.parallel._done_pg': ('parallel.html#_done_pg', 'fastcore/parallel.py'),
583583
'fastcore.parallel._f_pg': ('parallel.html#_f_pg', 'fastcore/parallel.py'),
584584
'fastcore.parallel.bg_task': ('parallel.html#bg_task', 'fastcore/parallel.py'),
585+
'fastcore.parallel.import_progress_bar': ('parallel.html#import_progress_bar', 'fastcore/parallel.py'),
585586
'fastcore.parallel.parallel': ('parallel.html#parallel', 'fastcore/parallel.py'),
586587
'fastcore.parallel.parallel_async': ('parallel.html#parallel_async', 'fastcore/parallel.py'),
587588
'fastcore.parallel.parallel_gen': ('parallel.html#parallel_gen', 'fastcore/parallel.py'),

fastcore/parallel.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/03a_parallel.ipynb.
44

55
# %% auto #0
6-
__all__ = ['threaded', 'startthread', 'startproc', 'parallelable', 'ThreadPoolExecutor', 'ProcessPoolExecutor', 'parallel',
7-
'parallel_async', 'bg_task', 'run_procs', 'parallel_gen']
6+
__all__ = ['threaded', 'startthread', 'startproc', 'parallelable', 'ThreadPoolExecutor', 'ProcessPoolExecutor',
7+
'import_progress_bar', 'parallel', 'parallel_async', 'bg_task', 'run_procs', 'parallel_gen']
88

99
# %% ../nbs/03a_parallel.ipynb #569d18c6
1010
from .imports import *
@@ -118,13 +118,16 @@ def map(self, f, items, *args, timeout=None, chunksize=1, **kwargs):
118118
except Exception as e: self.on_exc(e)
119119

120120
# %% ../nbs/03a_parallel.ipynb #f5327cb3
121-
try: from fastprogress import progress_bar
122-
except: progress_bar = None
121+
def import_progress_bar():
122+
try: from fastprogress import progress_bar
123+
except ImportError: return None
124+
return progress_bar
123125

124126
# %% ../nbs/03a_parallel.ipynb #529e1bb1
125127
def parallel(f, items, *args, n_workers=defaults.cpus, total=None, progress=None, pause=0,
126128
method=None, threadpool=False, timeout=None, chunksize=1, **kwargs):
127129
"Applies `func` in parallel to `items`, using `n_workers`"
130+
progress_bar = import_progress_bar()
128131
kwpool = {}
129132
if threadpool: pool = ThreadPoolExecutor
130133
else:
@@ -188,6 +191,7 @@ def _done_pg(queue, items): return (queue.get() for _ in items)
188191
# %% ../nbs/03a_parallel.ipynb #1122caee
189192
def parallel_gen(cls, items, n_workers=defaults.cpus, progress=True, **kwargs):
190193
"Instantiate `cls` in `n_workers` procs & call each on a subset of `items` in parallel."
194+
progress_bar = import_progress_bar()
191195
if not parallelable('n_workers', n_workers): n_workers = 0
192196
if n_workers==0:
193197
yield from enumerate(list(cls(**kwargs)(items)))

nbs/03a_parallel.ipynb

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,14 @@
460460
"show_doc(ProcessPoolExecutor, title_level=4)"
461461
]
462462
},
463+
{
464+
"cell_type": "markdown",
465+
"id": "b1d7c809",
466+
"metadata": {},
467+
"source": [
468+
"We define `import_progress_bar` to lazily import, `fastprogress` depends on `fasthtml` and takes about 1 sec to load"
469+
]
470+
},
463471
{
464472
"cell_type": "code",
465473
"execution_count": null,
@@ -468,8 +476,10 @@
468476
"outputs": [],
469477
"source": [
470478
"#| export\n",
471-
"try: from fastprogress import progress_bar\n",
472-
"except: progress_bar = None"
479+
"def import_progress_bar():\n",
480+
" try: from fastprogress import progress_bar\n",
481+
" except ImportError: return None\n",
482+
" return progress_bar"
473483
]
474484
},
475485
{
@@ -483,6 +493,7 @@
483493
"def parallel(f, items, *args, n_workers=defaults.cpus, total=None, progress=None, pause=0,\n",
484494
" method=None, threadpool=False, timeout=None, chunksize=1, **kwargs):\n",
485495
" \"Applies `func` in parallel to `items`, using `n_workers`\"\n",
496+
" progress_bar = import_progress_bar()\n",
486497
" kwpool = {}\n",
487498
" if threadpool: pool = ThreadPoolExecutor\n",
488499
" else:\n",
@@ -980,9 +991,10 @@
980991
"metadata": {},
981992
"outputs": [],
982993
"source": [
983-
"#| export \n",
994+
"#| export\n",
984995
"def parallel_gen(cls, items, n_workers=defaults.cpus, progress=True, **kwargs):\n",
985996
" \"Instantiate `cls` in `n_workers` procs & call each on a subset of `items` in parallel.\"\n",
997+
" progress_bar = import_progress_bar()\n",
986998
" if not parallelable('n_workers', n_workers): n_workers = 0\n",
987999
" if n_workers==0:\n",
9881000
" yield from enumerate(list(cls(**kwargs)(items)))\n",

0 commit comments

Comments
 (0)