Я использую Ubuntu 20.04.6 LTS (64-разрядная версия) с процессором Intel(R) Core 12-го поколения. (TM) процессор i7-12700K и 16 ГБ ОЗУ под Python 3.9.19. Когда я запускаю следующий код, команда htop показывает, что все 10 ядер используются должным образом:
Код: Выделить всё
import time
def fun(ele):
ele ** 1000
if __name__ == '__main__':
import multiprocessing
input_list = [1000] * 10000000
start_time = time.time()
pool = multiprocessing.Pool(10)
result = pool.map(func=fun, iterable=input_list)
pool.close()
pool.join()
end_time = time.time()
print(end_time - start_time)
Код: Выделить всё
import time
from PIL import Image
import numpy as np
import pickle
import os
import torch
def fun(ele):
ele ** 1000
if __name__ == '__main__':
import multiprocessing
input_list = [1000] * 1000000
start_time = time.time()
pool = multiprocessing.Pool(10)
result = pool.map(func=fun, iterable=input_list)
pool.close()
pool.join()
end_time = time.time()
print(end_time - start_time)
После установки метода запуска для создания с помощью multiprocessing.set_start_method('spawn') все 10 ядер снова работают корректно.
Код: Выделить всё
import time
from PIL import Image
import numpy as np
import time
import numpy as np
from PIL import Image
import pickle
import os
import torch
def fun(ele):
ele**1000
if __name__ == '__main__':
import multiprocessing
multiprocessing.set_start_method('spawn')
input_list = [1000]*1000000
n = 250000
start_time = time.time()
pool = multiprocessing.Pool(10)
result = pool.map(func=fun, iterable=input_list)
pool.close()
pool.join()
end_time = time.time()
print(end_time-start_time)
[*]Может ли эта проблема быть связана с ограничениями памяти, вызванными дополнительными библиотеками, которые я импортировал?
[*]Какие шаги я могу предпринять, чтобы в таких случаях процессы равномерно распределялись по ядрам ЦП (методом вилки)?
Подробнее здесь: https://stackoverflow.com/questions/792 ... e-20-cores
Мобильная версия