From f13e4260d474f43982303eacab1a4c30b76076bb Mon Sep 17 00:00:00 2001 From: Quantum Date: Sat, 26 Sep 2020 19:43:45 -0400 Subject: [PATCH] Add parallel processing --- win2xcur/main.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/win2xcur/main.py b/win2xcur/main.py index 7c3cd69..302bc42 100644 --- a/win2xcur/main.py +++ b/win2xcur/main.py @@ -2,6 +2,9 @@ import argparse import os import sys import traceback +from multiprocessing import cpu_count +from multiprocessing.pool import ThreadPool +from threading import Lock from win2xcur import shadow from win2xcur.parser import open_blob @@ -30,17 +33,19 @@ def main() -> None: help='color of the shadow') args = parser.parse_args() + print_lock = Lock() check_xcursorgen() - for file in args.files: + def process(file): name = file.name blob = file.read() try: cursor = open_blob(blob) except Exception: - print('Error occurred while processing %s:' % (name,), file=sys.stderr) - traceback.print_exc() + with print_lock: + print('Error occurred while processing %s:' % (name,), file=sys.stderr) + traceback.print_exc() else: if args.shadow: shadow.apply_to_frames(cursor.frames, color=args.shadow_color, radius=args.shadow_radius, @@ -50,6 +55,9 @@ def main() -> None: with open(output, 'wb') as f: f.write(result) + with ThreadPool(cpu_count()) as pool: + pool.map(process, args.files) + if __name__ == '__main__': main()