#python #multithreading #multiprocessing
#питон #многопоточность #многопроцессорная обработка
Вопрос:
У меня есть сервер с 96*2 ядрами, и я пишу программу на python для параллельного моделирования чего-либо. Ниже приведен мой код
import multiprocessing as mpr # ................ # The multiprocessing part pool = mpr.Pool(processes=2) results = [pool.apply_async(BFP_Cal_Single, args=(lrun,theta_test_1d,phi_test_1d,ratio_test_1d)) for lrun in (range(num_test))] BFPtmp = [p.get() for p in results] pool.close() pool.join() data_use_test = torch.zeros(num_test,3,num_kx,num_ky)
Я хочу использовать 2 ядра, и каждое из них занимает 100% процессора. Однако программа просто выполняет 2 задания, и каждое из них занимает более 100% процессора (например, 6800% загрузки процессора). Это приведет к исчерпанию источника моделирования, которого я не хочу. Кто-нибудь знает, как решить эту проблему?.
Снимок экрана для использования не 100% процессора
Я только что обнаружил, что, возможно, я смогу выполнить моделирование с помощью mpirun, изменив программу, но я все еще хочу знать, может ли это сделать многопроцессорная обработка?