可以通过设置进程的CPU亲和性(affinity)来限制一个进程只在特定的CPU核心上运行。
Windows
python
import psutilprocess = psutil.Process()
process.cpu_affinity([0])
c++
#include <Windows.h>
#include <iostream>void performComputation() {std::cout << "Performing computation..." << std::endl;// 模拟计算任务for (int i = 0; i < 1000000; ++i) {double temp = sqrt(i);}std::cout << "Computation finished." << std::endl;
}int main() {DWORD_PTR processAffinityMask = 1; // 绑定到CPU 0HANDLE hProcess = GetCurrentProcess();if (SetProcessAffinityMask(hProcess, processAffinityMask)) {std::cout << "Process affinity set to CPU 0." << std::endl;performComputation();} else {std::cerr << "Failed to set process affinity." << std::endl;}return 0;
}
Linux
python
import psutilprocess = psutil.Process()
process.cpu_affinity([0])
c++
#include <sched.h>
#include <unistd.h>
#include <iostream>
#include <cmath>
#include <cstring>void performComputation() {std::cout << "Performing computation..." << std::endl;// 模拟计算任务for (int i = 0; i < 1000000; ++i) {double temp = sqrt(i);}std::cout << "Computation finished." << std::endl;
}int main() {cpu_set_t mask;CPU_ZERO(&mask);CPU_SET(0, &mask); // 将进程绑定到CPU 0if (sched_setaffinity(0, sizeof(mask), &mask) == 0) {std::cout << "Process affinity set to CPU 0." << std::endl;performComputation();} else {std::cerr << "Failed to set process affinity: " << strerror(errno) << std::endl;}return 0;
}