Merge branch 'cancel-opti'

This commit is contained in:
Fabien LOISON 2021-06-23 11:43:53 +02:00
commit fc0c435453
No known key found for this signature in database
GPG Key ID: FF90CA148348048E
2 changed files with 19 additions and 7 deletions

View File

@ -57,6 +57,7 @@ Changelog
* **[NEXT]** (changes on ``master`` that have not been released yet):
* Python 2.7 support dropped
* Allow to cancel an optimization using Ctrl+C (NOTE: this may not work on Windows)
* **1.0.0:**

View File

@ -1,4 +1,7 @@
import os
import sys
import signal
from concurrent.futures import ThreadPoolExecutor
from . import cli
from . import image # noqa
@ -9,14 +12,22 @@ def main(args=sys.argv[1:]):
parser = cli.generate_main_cli()
parsed_args = parser.parse_args(args if args else ["--help"])
handler = getattr(sys.modules[__name__], parsed_args.subcommand)
handler.optimize(
parsed_args.input,
parsed_args.output,
options=vars(parsed_args),
verbose=parsed_args.verbose,
quiet=parsed_args.quiet,
)
with ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(
handler.optimize,
parsed_args.input,
parsed_args.output,
options=vars(parsed_args),
verbose=parsed_args.verbose,
quiet=parsed_args.quiet,
)
def _on_sigint_received(signalnum, stackframe):
print("Optimization canceled")
os.kill(os.getpid(), signal.SIGTERM)
if __name__ == "__main__":
signal.signal(signal.SIGINT, _on_sigint_received)
main()