From cdd87729187b8779d2002e8d74b78f588b079512 Mon Sep 17 00:00:00 2001 From: Vasu Jain <91457798+7Zenox@users.noreply.github.com> Date: Wed, 10 Jul 2024 00:25:12 +0530 Subject: [PATCH] Bug fix - Handled an issue where if chunk was too small due to division, it would throw an error --- pandarallel/progress_bars.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pandarallel/progress_bars.py b/pandarallel/progress_bars.py index 7f56748..0a4c6dc 100644 --- a/pandarallel/progress_bars.py +++ b/pandarallel/progress_bars.py @@ -5,7 +5,8 @@ from abc import ABC, abstractmethod from enum import Enum from itertools import count -from time import time_ns, sleep +from time import time_ns +import time from typing import Callable, List, Union from .utils import WorkerStatus @@ -195,18 +196,18 @@ def progress_wrapper( sleep_seconds: int = 0, sleep_after_percent: float = 100.0 ) -> Callable: - """Wrap the function to apply in a function which monitors the part of work already - done and pauses after every n% completion. + """Wrap the function to apply in a function which monitor the part of work already + done. """ counter = count() state = ProgressState(chunk_size) - sleep_interval = int(chunk_size * (sleep_after_percent / 100.0)) + sleep_after_iteration = max(int(chunk_size * (sleep_after_percent / 100.0)), 1) # Ensure at least 1 def closure(*user_defined_function_args, **user_defined_functions_kwargs): iteration = next(counter) - if iteration % sleep_interval == 0 and iteration != 0: - sleep(sleep_seconds) + if iteration % sleep_after_iteration == 0: # Sleep every sleep_after_iteration + time.sleep(sleep_seconds) if iteration == state.next_put_iteration: time_now = time_ns()