447 votes

Didacticiel sur Comment convertir MOV en M4V sur Mac OS X

Comment pouvez-vous dire à partir de la ligne de commande, le nombre de noyaux sont sur la machine lorsque vous êtes sous Mac OS X? Sur Linux, j'utilise:

x=$(awk '/^processor/ {++n} END {print n+1}' /proc/cpuinfo)

Il n'est pas parfait, mais il est proche. Ceci est destiné à en avoir marre d' make, ce qui est pourquoi il donne un résultat de 1 plus élevé que le nombre réel. Et je sais que le code ci-dessus peut être écrit plus dense en Perl ou peut être écrite à l'aide de grep, wc, et de la coupe, mais j'ai décidé de les ci-dessus est un bon compromis entre la concision et de lisibilité.

TRÈS TARD EDIT: Juste pour préciser: je me demande combien de logique que les cœurs sont à disposition, parce que cela correspond à combien simultanée des emplois, je veux make pour frayer. jkp réponse, affinée par Chris Lloyd, était exactement ce dont j'avais besoin. YMMV.

939voto

jkp Points 20410

Vous pouvez faire cela en utilisant la variable sysctl utilitaire:

sysctl hw.ncpu | awk '{print $2}'

145voto

mlbright Points 907

Encore plus facile:

sysctl -n hw.ncpu

22voto

user1706991 Points 46

system_profiler SPHardwareDataType montre que j'ai 1 processeur et de 4 cœurs.

[~] system_profiler SPHardwareDataType Matériel:

Hardware Overview:

  Model Name: MacBook Pro
  Model Identifier: MacBookPro9,1
  Processor Name: Intel Core i7
  Processor Speed: 2.6 GHz
  Number of Processors: 1
  Total Number of Cores: 4

  <snip>

[~]

Cependant, sysctl n'est pas d'accord:

[~] sysctl -n hw.logicalcpu 8 [~] sysctl -n hw.physicalcpu 4 [~]

Mais sysctl semble correct, car quand je lance un programme qui devrait prendre toutes les CPU slots, je vois ce programme de près de 800% de temps CPU (en haut):

COMMANDE PID %CPU
4306 haut 5.6
4304 java 745.7 4296 locationd 0.0

21voto

alfwatt Points 688

Pour ce faire, dans le code, vous pouvez utiliser la variable sysctl(3) de la famille de fonctions:

int count;
size_t count_len;
sysctlbyname("hw.logicalcpu", &count, &count_len, NULL, 0);
fprintf(stderr,"you have %i cpu cores", count);

Les valeurs intéressantes à utiliser à la place de "hw.logicalcpu", qui compte cœurs, sont:

hw.physicalcpu - The number of physical processors available in the current power management mode.

hw.physicalcpu_max - The maximum number of physical processors that could be available this boot.

hw.logicalcpu - The number of logical processors available in the current power management mode.

hw.logicalcpu_max - The maximum number of logical processors that could be available this boot.

10voto

kent Points 2151
$ system_profiler | grep 'Total Number Of Cores'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X