Я не скажу вам, какой использовать, но вот некоторые преимущества каждого:
Потоки могут запускаться быстрее, чем процессы, и потоки используют меньше ресурсов операционной системы, чем процессы, включая память, файловые дескрипторы и т. Д. Потоки также дают вам возможность общаться через общие переменные (хотя многие скажем, это скорее недостаток, чем преимущество - см. ниже).
Процессы каждый имеет свою собственную отдельную память и переменные, что означает, что процессы обычно общаются друг с другом, отправляя сообщения друг другу. Это гораздо проще сделать правильно , чем потоки обмениваются данными через общую память. Процессы также могут выполняться по-настоящему параллельно, поэтому, если у вас несколько ядер ЦП, вы можете держать их все занятыми используя процессы. В Python * глобальная блокировка интерпретатора не позволяет многим потокам использовать более одного ядра.
* - То есть CPython, который представляет собой реализацию Python, которую вы получите, если перейдете на http://python.org и загрузите Python. Другие реализации Python (такие как Jython ) не обязательно запрещают Python запускать потоки на нескольких процессорах одновременно. Спасибо @EOL за разъяснения.