On Sat, 25 Feb 2023 15:41:52 -0600, Skip Montanaro <skip.montan...@gmail.com> declaimed the following:
>concurrent.futures.ThreadPoolExecutor() with the default number of workers ( >os.cpu_count() * 1.5, or 12 threads on my system) to process each month, so >12 active threads at a time. Given that the process is pretty much CPU >bound, maybe reducing the number of workers to the CPU count would make Unless things have improved a lot over the years, the GIL still limits active threads to the equivalent of a single CPU. The OS may swap among which CPU as it schedules system processes, but only one thread will be running at any moment regardless of CPU count. Common wisdom is that Python threading works well for I/O bound systems, where each thread spends most of its time waiting for some I/O operation to complete -- thereby allowing the OS to schedule other threads. For CPU bound, use of the multiprocessing package may be more suited -- though you'll have to device a working IPC system transfer data to/from the separate processes (no shared objects as possible with threads). -- Wulfraed Dennis Lee Bieber AF6VN wlfr...@ix.netcom.com http://wlfraed.microdiversity.freeddns.org/ -- https://mail.python.org/mailman/listinfo/python-list