Если использовать потоки (threads), то все воркеры будут выполняться одним ядром, деля время процессора при помощи GIL. Однако, если использовать модуль multiprocessing, то задачи можно распараллелить между ядрами.
import multiprocessing
import time
import random
def worker(number):
sleep = random.randrange(1, 10)
time.sleep(sleep)
print("I am Worker {}, I slept for {} seconds".format(number, sleep))
for i in range(5):
t = multiprocessing.Process(target=worker, args=(i,))
t.start()
Как видите, в приведённом примере одновременно запускаются 5 задач. Допустим, что компьютер, который выполняет эту программу имеет 4 ядра. Скажите пожалуйста:
1. как в этом случае 4 ядра поделят между собой 5 процессов?
2. Правильно ли я понимаю, что в этом случае настоящего параллелизма не получится?