Executes a cmd that outputs completion percentages, interpreting them and executing callbacks with the increment and total percentage.
Project description
Executes a cmd while interpreting its completion percentage.
The completion percentage of the cmd is stored in an attribute percentage and the user can obtain percentage increments by executing increment or by passing a callback when initializing.
This class is useful to use within a child thread, so the child thread executes the cmd, blocking and updating the increment and percentage to the parent thread, that can do other things in the meantime.
Examples
Badblocks
def my_callback(increment, total):
print(f'Update: +{increment}% / {total}%.')
def child_thread():
progress = ProgressiveCmd('badblocks', '-st', 'random', '-w', 'dev/sda1', digits=ProgressiveCmd.DECIMALS, decimal_digits=2, read=35, callback=my_callback)
progress.run()
t = threading.Thread(target=child_thread)
t.start()
Shred
def my_callback(increment, total):
print(f'Update: +{increment} / {total}%.')
def child_thread():
progress = ProgressiveCmd('shred', '-vn 1', 'dev/sda1', callback=my_callback)
progress.run()
t = threading.Thread(target=child_thread)
t.start()
fsarchiver
def my_callback(increment, total):
print(f'Update: +{increment} / {total}%.')
def child_thread():
progress = ProgressiveCmd('fsarchiver', 'restfs', '-v', 'foo/bar/', 'id=0,dest=dev/sda1', callback=my_callback)
progress.run()
t = threading.Thread(target=child_thread)
t.start()
Using tqdm
You can use the increment value to update tqdm:
t = tqdm(total=100)
def my_callback(increment, total):
t.update(increment)
def child_thread():
progress = ProgressiveCmd('a-program', callback=my_callback)
progress.run()
thread = threading.Thread(target=child_thread)
thread.start()
Testing
git clone this project.
Execute python setup.py test in the project folder.
Contributing
Is a missing or wrong code? Say it in the issues! Feel free to contribute.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.