Задать вопрос
@zlodiak

Как процессы распределяются между ядрами?

Если использовать потоки (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. Правильно ли я понимаю, что в этом случае настоящего параллелизма не получится?
  • Вопрос задан
  • 488 просмотров
Подписаться 2 Простой 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы