Skip to main content


Had quite the time working on a personal project recently. It changed my life forever.

  • Learned the hard way that the (default on most POSIX) fork context is bad news.
  • Wrote a Unix domain datagram based log infrastructure.
  • Wrote an algorithm that operates kind of like concurrent.futures.as_completed(), except it has a priority queue and doesn't eagerly load the list of futures.
  • Discovered that it's possible to overload concurrent.futures.ProcessPoolExecutor with futures, preventing any actual background processing after a point.
  • Got TONS of practice optimizing stuff for large datasets.
  • Learned that taking breaks is important for reasons than most people are aware of.
  • My life was permanently altered by this project. I basically nerd-sniped myself.

#Python #programming


Never, ever, use the fork context in multiprocessing. :blobfoxsweating: POSIX OSes (aside from macOS) have that as the default. :blobfoxangrylaugh: Always use the spawn context! :blobfoxdead:

Of course, unless you have an extreme edge case. :blobfoxgoogly: (Yes, the names are funny. :blobfoxgooglytrash: )

#Python #multiprocessing


Tech Cyborg reshared this.

in reply to Neil E. Hodges

This whole mess got me thinking seriously about learning #Kotlin, since it would eliminate needing to use IPC to make use of multiple CPU cores. (Yes, I actually like the #JVM, but don’t want to boilerplate myself to death with #Java. :P )

I’ll probably still look into learning Kotlin, but not for this project.