2016-12-09 3 views
0

Я пытаюсь создать простое приложение, которое отправляет циклы процессора для многоядерных исследований. Тот, который я создал, занимает 100% -ное использование ядра. Я хочу, чтобы это составляло около 30% 60% 70%, какие корректировки я должен сделать, чтобы добиться этого? Заранее спасибо.Отбрасывание циклов процессора с помощью python

Текущая версия:

a=999999999 
while True: 
    a=a/2 
+1

это не ответ, но, возможно, он должен: не использовать Python для этого – MariusSiuram

+2

'время импорта; а 1: time.sleep (n) 'для подходящего размера' n'. – TigerhawkT3

+1

@mozcelikors вы можете сослаться на эту ссылку http://xmodulo.com/run-program-process-specific-cpu-cores-linux.html –

ответ

1

Начиная с большим количеством не является необходимой, так как деление на 2 быстро закончить как 0/2 снова и снова в любом случае. Кроме того, вам не нужно на самом деле ничего делать в цикле, чтобы потреблять циклы процессора - простого действия цикла достаточно. Вот почему любой бесконечный цикл, даже такой простой, как while 1: pass, будет дожидаться всего ядра процессора до его смерти. Чтобы избежать использования всего ядра, используйте time.sleep, чтобы приостановить выполнение потока в течение определенного периода времени. Эта функция принимает один аргумент, представляющий время в секундах, когда поток спал. Он принимает число с плавающей запятой.

import time 
while 1: 
    time.sleep(0.0001) 

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

Обратите внимание, что некоторые операционные системы могут не поддерживать время сна менее одной миллисекунды, в результате чего более короткие спящие времена проходят через ноль, что делает их несовместимыми с этой стратегией. См. Python: high precision time.sleep и How accurate is python's time.sleep()? для получения дополнительной информации.