Понимание Одновременного.Фьючерсы на увеличение нагрузки на процессор

#python #concurrent.futures

#питон #параллельные.фьючерсы

Вопрос:

Python 3.10

Я запускаю этот сценарий, используя concurrent.futures его, чтобы попытаться разместить как можно больше нагрузки на все ядра процессора для теста, который я запускаю.

Пожалуйста, обратите внимание, что эти функции будут выполняться бесконечным циклом до тех пор, пока не будут завершены вручную.

 import concurrent.futures  num_instances = 100  def func1()  try:  for i in itertools.count(start=1):  p = pow(2,i)  print(p) #optional - if you want to see a whole lot of output  except KeyboardInterrupt:  print("Loop terminated")  raise  def func2()  try:  for i in itertools.count(start=1):  p = pow(10,i)  print(p) #optional - if you want to see a whole lot of output  except KeyboardInterrupt:  print("Loop terminated")  raise  with concurrent.futures.ProcessPoolExecutor() as executor:  results1 = [executor.submit(func1) for _ in range(num_instances)]  results2 = [executor.submit(func2) for _ in range(num_instances)]  

Если мое понимание concurrent.futures верно, этот код, по сути, заменяет необходимость использования любого multiprocessing синтаксиса в коде.

Однако, когда я запускаю это, я, безусловно, вижу, как активность/процент ядер процессора увеличивается по мере того, как я передаю более высокие числа num_instances . Но до сих пор я не достигаю такой высокой загрузки процессора, которую я хочу видеть (я пытаюсь понять, сколько нагрузки требуется для максимального использования всех ядер).

От меня не ускользает ирония в том, что обычно это действительно хороший результат, когда вы хотите доказать, что программа работает хорошо :).

Но в моем случае я хочу, чтобы эти ядра работали как можно более «горячими и тяжелыми». Поэтому мой вопрос в том, есть ли что-то еще, что я могу сделать в своем коде, чтобы действительно поднять это на следующий уровень? Является ли то, что я делаю, num_instances единственным способом добиться этого? Делая это таким образом, я вижу только около 70% общей загрузки процессора.