DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

Multithreading VS Multiprocessing in Python


The following is the conclusion part of an excellent analysis article: Multithreading VS Multiprocessing in Python by Amine Baatout:

  • There can only be one thread running at any given time in a Python process.
  • Multiprocessing is parallelism. Multithreading is concurrency.
  • Multiprocessing is for increasing speed. Multithreading is for hiding latency.
  • Multiprocessing is best for computations. Multithreading is best for IO.
  • If you have CPU heavy tasks, use multiprocessing with n_process = n_cores and never more. Never!
  • If you have IO heavy tasks, use multithreading with n_threads = m * n_cores with m a number bigger than 1 that you can tweak on your own. Try many values and choose the one with the best speedup because there isn’t a general rule. For instance the default value of m in ThreadPoolExecutor is set to 5 [Source] which honestly feels quite random in my opinion.


Published

Aug 1, 2020

Last Updated

Aug 1, 2020

Category

Tech

Tags

  • concurrency 2
  • parallel 2
  • process 2
  • python 136
  • thread 3

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor