diff --git a/facefusion/core.py b/facefusion/core.py index c948c25..79d2060 100755 --- a/facefusion/core.py +++ b/facefusion/core.py @@ -2,7 +2,6 @@ import itertools import shutil import signal import sys -from functools import partial from time import time import numpy @@ -12,7 +11,7 @@ from facefusion.args import apply_args, collect_job_args, reduce_job_args, reduc from facefusion.common_helper import get_first from facefusion.content_analyser import analyse_image, analyse_video from facefusion.download import conditional_download_hashes, conditional_download_sources -from facefusion.exit_helper import graceful_exit, hard_exit +from facefusion.exit_helper import signal_exit, hard_exit from facefusion.face_analyser import get_average_face, get_many_faces, get_one_face from facefusion.face_selector import sort_and_filter_faces from facefusion.face_store import append_reference_face, clear_reference_faces, get_reference_faces @@ -32,7 +31,7 @@ from facefusion.vision import pack_resolution, read_image, read_static_images, r def cli() -> None: if pre_check(): - signal.signal(signal.SIGINT, partial(graceful_exit, 0)) + signal.signal(signal.SIGINT, signal_exit) program = create_program() if validate_args(program): diff --git a/facefusion/exit_helper.py b/facefusion/exit_helper.py index b63fb51..9efd598 100644 --- a/facefusion/exit_helper.py +++ b/facefusion/exit_helper.py @@ -1,6 +1,7 @@ import signal import sys from time import sleep +from types import FrameType from facefusion import process_manager, state_manager from facefusion.temp_helper import clear_temp_directory @@ -12,6 +13,10 @@ def hard_exit(error_code : ErrorCode) -> None: sys.exit(error_code) +def signal_exit(signum : int, frame : FrameType): + graceful_exit(0) + + def graceful_exit(error_code : ErrorCode) -> None: process_manager.stop() while process_manager.is_processing(): diff --git a/facefusion/installer.py b/facefusion/installer.py index 0c35d7c..a04faab 100644 --- a/facefusion/installer.py +++ b/facefusion/installer.py @@ -5,6 +5,7 @@ import subprocess import sys from argparse import ArgumentParser, HelpFormatter from functools import partial +from types import FrameType from facefusion import metadata, wording from facefusion.common_helper import is_linux, is_windows @@ -23,7 +24,7 @@ if is_linux(): def cli() -> None: - signal.signal(signal.SIGINT, partial(sys.exit, 0)) + signal.signal(signal.SIGINT, signal_exit) program = ArgumentParser(formatter_class = partial(HelpFormatter, max_help_position = 50)) program.add_argument('--onnxruntime', help = wording.get('help.install_dependency').format(dependency = 'onnxruntime'), choices = ONNXRUNTIME_SET.keys(), required = True) program.add_argument('--skip-conda', help = wording.get('help.skip_conda'), action = 'store_true') @@ -31,6 +32,10 @@ def cli() -> None: run(program) +def signal_exit(signum : int, frame : FrameType): + sys.exit(0) + + def run(program : ArgumentParser) -> None: args = program.parse_args() has_conda = 'CONDA_PREFIX' in os.environ