napari.utils.cancelable_progress¶
- class napari.utils.cancelable_progress(*_, **__)[source]¶
Bases:
napari.utils.progress.progress
This class inherits from progress, providing the additional ability to cancel expensive executions. When progress is canceled by the user in the napari UI, two things will happen:
Firstly, the is_canceled attribute will become True, and the for loop will terminate after the current iteration, regardless of whether or not the iterator had more items.
Secondly, cancel_callback will be called, allowing the computation to close resources, repair state, etc.
See napari.utils.progress and tqdm.tqdm API for valid args and kwargs: https://tqdm.github.io/docs/tqdm/
Examples
>>> def long_running(steps=10, delay=0.1): ... def on_cancel(): ... print("Canceled operation") ... for i in cancelable_progress(range(steps), cancel_callback=on_cancel): ... sleep(delay)
Methods
cancel
()Cancels the execution of the underlying computation.
clear
([nolock])Clear current bar display.
close
()Close progress object and emit event.
display
([msg, pos])Update the display and emit eta event.
external_write_mode
([file, nolock])Disable tqdm within context and refresh tqdm when exits.
Formats a number of seconds as a clock time, [H:]MM:SS
format_meter
(n, total, elapsed[, ncols, ...])Return a string-based progress bar given some parameters
format_num
(n)Intelligent scientific notation (.3g).
format_sizeof
(num[, suffix, divisor])Formats a number (greater than unity) with SI Order of Magnitude prefixes.
get_lock
()Get the global lock.
Update if not exceeding total, else set indeterminate range.
moveto
(n)pandas
(**tqdm_kwargs)Registers the current tqdm class with
refresh
([nolock, lock_args])Force refresh the display of this bar.
reset
([total])Resets to 0 iterations for repeated use.
set_description
(desc)Update progress description and emit description event.
set_description_str
([desc, refresh])Set/modify description without ': ' appended.
set_lock
(lock)Set the global lock.
set_postfix
([ordered_dict, refresh])Set/modify postfix (additional stats) with automatic formatting based on datatype.
set_postfix_str
([s, refresh])Postfix without dictionary expansion, similar to prefix handling.
status_printer
(file)Manage the printing and in-place updating of a line of characters.
unpause
()Restart tqdm timer from last print time.
update
([n])Update progress value by n and emit value event
wrapattr
(stream, method[, total, bytes])stream : file-like object. method : str, "read" or "write". The result of read() and the first argument of write() should have a len().
write
(s[, file, end, nolock])Print a message via tqdm (without overlap with bars).
Attributes
Public API for read-only member access.
monitor
monitor_interval
total
Details
- cancel()[source]¶
Cancels the execution of the underlying computation. Note that the current iteration will be allowed to complete, however future iterations will not be run.
- clear(nolock=False)¶
Clear current bar display.
- close()¶
Close progress object and emit event.
- display(msg: Optional[str] = None, pos: Optional[int] = None) None ¶
Update the display and emit eta event.
- classmethod external_write_mode(file=None, nolock=False)¶
Disable tqdm within context and refresh tqdm when exits. Useful when writing to standard output stream
- property format_dict¶
Public API for read-only member access.
- static format_interval(t)¶
Formats a number of seconds as a clock time, [H:]MM:SS
- static format_meter(n, total, elapsed, ncols=None, prefix='', ascii=False, unit='it', unit_scale=False, rate=None, bar_format=None, postfix=None, unit_divisor=1000, initial=0, colour=None, **extra_kwargs)¶
Return a string-based progress bar given some parameters
- Parameters
total (int or float) – The expected total number of iterations. If meaningless (None), only basic progress statistics are displayed (no ETA).
elapsed (float) – Number of seconds passed since start.
ncols (int, optional) – The width of the entire output message. If specified, dynamically resizes {bar} to stay within this bound [default: None]. If 0, will not print any bar (only stats). The fallback is {bar:10}.
prefix (str, optional) – Prefix message (included in total width) [default: ‘’]. Use as {desc} in bar_format string.
ascii (bool, optional or str, optional) – If not set, use unicode (smooth blocks) to fill the meter [default: False]. The fallback is to use ASCII characters ” 123456789#”.
unit (str, optional) – The iteration unit [default: ‘it’].
unit_scale (bool or int or float, optional) – If 1 or True, the number of iterations will be printed with an appropriate SI metric prefix (k = 10^3, M = 10^6, etc.) [default: False]. If any other non-zero number, will scale total and n.
rate (float, optional) – Manual override for iteration rate. If [default: None], uses n/elapsed.
bar_format (str, optional) –
Specify a custom bar string formatting. May impact performance. [default: ‘{l_bar}{bar}{r_bar}’], where l_bar=’{desc}: {percentage:3.0f}%|’ and r_bar=’| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, ‘
’{rate_fmt}{postfix}]’
- Possible vars: l_bar, bar, r_bar, n, n_fmt, total, total_fmt,
percentage, elapsed, elapsed_s, ncols, nrows, desc, unit, rate, rate_fmt, rate_noinv, rate_noinv_fmt, rate_inv, rate_inv_fmt, postfix, unit_divisor, remaining, remaining_s, eta.
Note that a trailing “: ” is automatically removed after {desc} if the latter is empty.
postfix (*, optional) – Similar to prefix, but placed at the end (e.g. for additional stats). Note: postfix is usually a string (not a dict) for this method, and will if possible be set to postfix = ‘, ‘ + postfix. However other types are supported (#382).
unit_divisor (float, optional) – [default: 1000], ignored unless unit_scale is True.
initial (int or float, optional) – The initial counter value [default: 0].
colour (str, optional) – Bar colour (e.g. ‘green’, ‘#00ff00’).
- Returns
out
- Return type
Formatted meter and stats, ready to display.
- static format_num(n)¶
Intelligent scientific notation (.3g).
- static format_sizeof(num, suffix='', divisor=1000)¶
Formats a number (greater than unity) with SI Order of Magnitude prefixes.
- classmethod get_lock()¶
Get the global lock. Construct it if it does not exist.
- increment_with_overflow()¶
Update if not exceeding total, else set indeterminate range.
- classmethod pandas(**tqdm_kwargs)¶
- Registers the current tqdm class with
pandas.core. ( frame.DataFrame | series.Series | groupby.(generic.)DataFrameGroupBy | groupby.(generic.)SeriesGroupBy ).progress_apply
A new instance will be created every time progress_apply is called, and each instance will automatically close() upon completion.
- Parameters
tqdm_kwargs (arguments for the tqdm instance) –
Examples
>>> import pandas as pd >>> import numpy as np >>> from tqdm import tqdm >>> from tqdm.gui import tqdm as tqdm_gui >>> >>> df = pd.DataFrame(np.random.randint(0, 100, (100000, 6))) >>> tqdm.pandas(ncols=50) # can use tqdm_gui, optional kwargs, etc >>> # Now you can use `progress_apply` instead of `apply` >>> df.groupby(0).progress_apply(lambda x: x**2)
References
<https://stackoverflow.com/questions/18603270/ progress-indicator-during-pandas-operations-python>
- refresh(nolock=False, lock_args=None)¶
Force refresh the display of this bar.
- reset(total=None)¶
Resets to 0 iterations for repeated use.
Consider combining with leave=True.
- set_description(desc)¶
Update progress description and emit description event.
- set_description_str(desc=None, refresh=True)¶
Set/modify description without ‘: ‘ appended.
- classmethod set_lock(lock)¶
Set the global lock.
- set_postfix(ordered_dict=None, refresh=True, **kwargs)¶
Set/modify postfix (additional stats) with automatic formatting based on datatype.
- set_postfix_str(s='', refresh=True)¶
Postfix without dictionary expansion, similar to prefix handling.
- static status_printer(file)¶
Manage the printing and in-place updating of a line of characters. Note that if the string is longer than a line, then in-place updating may not work (it will print a new line at each refresh).
- unpause()¶
Restart tqdm timer from last print time.
- update(n=1)¶
Update progress value by n and emit value event
- classmethod wrapattr(stream, method, total=None, bytes=True, **tqdm_kwargs)¶
stream : file-like object. method : str, “read” or “write”. The result of read() and
the first argument of write() should have a len().
>>> with tqdm.wrapattr(file_obj, "read", total=file_obj.size) as fobj: ... while True: ... chunk = fobj.read(chunk_size) ... if not chunk: ... break
- classmethod write(s, file=None, end='\n', nolock=False)¶
Print a message via tqdm (without overlap with bars).