O sistema operacional agenda o processo por um determinado período de tempo. Então, se o processo está programado para (digamos) 1ms de 10ms, então ele estará usando 10% da CPU.
É um pouco contra-intuitivo, já que (em um sistema com uma única thread e CPU única), o processo está sendo executado ou não está em execução. ou seja, está usando 100% ou 0%. A porcentagem que você vê é medida em uma janela de tempo e é uma medida dos slots de alocação de OS para o processo a ser executado.
Observe que o seu processo não contribuirá para isso se você estiver acessando a E / S. Então, se você está fazendo um grande cálculo, você irá registrar 100% (assumindo que nada mais seja executado). Se você esperar por um acesso de pacote / disco de rede, etc., seu número de CPU irá diminuir, apesar do fato de que seu processo ainda está em execução.