from Core.core import main from Logger.logger import logger from Scheduler.scheduler import Timer from Config.settings import config from Server.server import server from threading import Thread from GUI.gui import gui from concurrent.futures import ProcessPoolExecutor PROCESS_MODEL = config.settings("Server", "PROCESS_MODEL") SCHEDULER = config.settings("Scheduler", "START_USING") SERVER = config.settings("Server", "START_USING") GUI = config.settings("GUI", "START_USING") def running(): if not SCHEDULER: thread_main = Thread(target=main) thread_main.start() else: # 调度器开启后main函数将被scheduler调度器代理,开启定时执行main startTime = config.settings("Scheduler", "START_TIME") skipWeekend = config.settings("Scheduler", "SKIP_WEEKEND") scheduler = Timer(task=main, startTime=startTime, skipWeekend=skipWeekend) thread_scheduler = Thread(target=scheduler.schedule) thread_scheduler.start() if SERVER: if PROCESS_MODEL: work_count = config.settings("Server", "PROCESS_COUNT") server_process(work_count) else: thread_server = Thread(target=server) thread_server.start() if GUI: gui() def server_process(work_count=4): with ProcessPoolExecutor(work_count) as pool: for i in range(work_count): pool.submit(server()) if __name__ == "__main__": DEBUG = config.settings("Debug", "DEBUG") if DEBUG: logger.info("\n===== DEBUG MODE =====") main() else: running()