指定运行python脚本的核心。系统D

2024-10-01 00:14:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个系统服务:

[Unit]
Description=Toasty
After=multi-user.target

[Service]
WorkingDirectory=/mnt/data/Toasty
User=root
Group=root
ExecStart=/usr/local/bin/python3.5 /mnt/data/Toasty/run.py
Type=idle
Restart=always
RestartSec=2

[Install]
WantedBy=multi-user.target

我想要的是能够为python代码指定一个核心来运行。在


Tags: targetdata系统servicegroupunitrootdescription
2条回答

(TL;末尾为DR)

您可以使用taskset命令来实现这一点,它是util-linux包的一部分。 大多数发行版都附带了它,如果您的系统上没有它,请安装它:

apt-get install util-linux

使用以下命令以十六进制形式查看进程的CPU相关性:

^{pr2}$

它将返回沿ff的内容,等于二进制或all cores中的11111111。在

指定'c'选项(例如:taskset -cp [pid])以获得人类可读的格式,如0-7。在

要将已运行的进程固定到特定的核心,请使用

taskset -p [hexmask] [pid]

ex: taskset -p 0x1 4242

或者

taskset -cp [list] [pid]

ex: taskset -cp 0 4242

使用'c'选项,您可以使用逗号分隔的列表或核心范围(例如:0,2,5-7)。在


TL;DR:

现在我们已经掌握了基本知识,让我们来看看您的用例。可以使用taskset启动固定到核心的进程,如下所示:

taskset 0x1 vlc

它将启动并将vlc固定到核心0。在

如果您希望将整个内核专用于一个(或多个)进程,那么您应该查看一下isolcpus内核参数并将其集成到grub配置中。它将在引导期间保留这些核心,以防其他进程使用,除了那些用taskset分配的内核。在

尝试将ExecStartPost=/path/to/taskset -cp 1 $MAINPID添加到Install部分。在

[Unit]
Description=Toasty
After=multi-user.target

[Service]
WorkingDirectory=/mnt/data/Toasty
User=root
Group=root
ExecStart=/usr/local/bin/python3.5 /mnt/data/Toasty/run.py
ExecStartPost=/path/to/taskset -cp 1 $MAINPID
Type=idle
Restart=always
RestartSec=2

[Install]
WantedBy=multi-user.target

相关问题 更多 >