Как да заредите процес само на определени процесорни ядра

има скрипт, който ражда процеси с брой ядра -1, оставяме 1 ядро ​​на система, тези процеси от своя страна се раждат. всички процеси, генерирани от ръководителя на класа, са ресурсоемки и как системата да работи поне на 1 ядро.

Така че зависи от малкото нещо - да хвърлите повикване от python към vinapi)) (ако говорим за Windows). Между другото дори Task Manager има тази функция.

Python native означава, emnip, не правете това. Трябва да измислите нещо на ниво ОС по отношение на виртуалната машина на Python. Но що се отнася до вашия код по-горе - откъснете ръцете си. Казвате, че искате да запазите ядрото, за да работи системата, а вие самият сте на негово място и го консумирате в безкраен цикъл без паузи.

Затова ви съветвам да се придържате към цикъла time.sleep поне за 1 ms. Спомням си, че четох някъде за механизъм, който ви позволява просто да дадете нишка на операционната система (без да указвате забавяне), докато тя реши да прехвърли контрола отново на тази нишка. Но не го намерих. Това вероятно е функция от java.

Като цяло, опитайте се да правите това, което правят всички нормални хора. Пулът от процеси е с 1 по-малък от броя на ядрата и използвайте нишки там. Това не гарантира, че ще имате един процес, работещ постоянно на едно и също ядро, но гарантира, че няма да има повече от n-1 ядра, работещи паралелно. В този случай наличието на нишки не ни притеснява, тъй като има gil, който ще попречи на нишките на един процес да работят паралелно.