Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 23 |
Nodes: | 6 (0 / 6) |
Uptime: | 54:45:05 |
Calls: | 583 |
Files: | 1,139 |
D/L today: |
179 files (27,921K bytes) |
Messages: | 111,801 |
From <https://www.infoworld.com/article/4018856/4-tips-for-getting-started-with-free-threaded-python.html>:
As an example, if you have a job that writes a lot of files,
having each job in its own thread is less effective if each job
also writes the file. This is because writing files is an
inherently serial operation. A better approach would be to divide
jobs across threads and use one thread for writing to disk. As
each job finishes, it sends work to the disk-writing job. This
way, jobs donrCOt block each other and arenrCOt themselves blocked by
file writing.
Actually, blocking system calls (whether for I/O or something else)
only block the current thread. So having each thread do its own I/O
should be faster than funnelling it all through one bottleneck thread.
If you donrCOt want your worker threads blocked waiting for I/O to
complete, then each worker context can be a pair of threads: one does
the CPU-intensive stuff, while the other handles the blocking I/O.