[파이썬] subprocess `subprocess.IDLE_PRIORITY_CLASS`: 대기 상태 우선 순위 설정

When using subprocess module in Python, you have the ability to execute external commands and interact with them. One useful feature of the subprocess module is the ability to set the priority of the executed command.

In this blog post, we will focus on setting the IDLE_PRIORITY_CLASS priority with the subprocess module in Python. We will explore what IDLE_PRIORITY_CLASS means and how to use it.

What is IDLE_PRIORITY_CLASS?

IDLE_PRIORITY_CLASS is a priority level available in the Windows operating system. It is used to set the priority of a process to the lowest possible level without suspending it.

When a process is assigned the IDLE_PRIORITY_CLASS, it will only use the available CPU resources when no other processes with higher priority need them. This means that the process will only run when the system is not busy with other tasks.

Using IDLE_PRIORITY_CLASS can be beneficial in situations where you have a background process that doesn’t require immediate attention and can run without affecting the performance of other critical tasks.

Setting IDLE_PRIORITY_CLASS with subprocess

To set the IDLE_PRIORITY_CLASS with subprocess in Python, you need to use the subprocess.CREATE_NEW_PROCESS_GROUP flag along with the subprocess.CREATE_NEW_CONSOLE flag.

Here’s an example code snippet:

import subprocess

command = "my_background_task.exe"

startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

creationflags = subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.CREATE_NEW_CONSOLE | subprocess.IDLE_PRIORITY_CLASS

subprocess.Popen(command, startupinfo=startupinfo, creationflags=creationflags)

In the above code, we use the subprocess.Popen function to start the background process. We pass the command as the argument and also set the startupinfo and creationflags parameters.

The subprocess.STARTF_USESHOWWINDOW flag is used to hide the console window of the background process. The subprocess.CREATE_NEW_PROCESS_GROUP and subprocess.CREATE_NEW_CONSOLE flags are used to create a new process group and console for the background process. Finally, we specify the subprocess.IDLE_PRIORITY_CLASS flag to set the priority of the process to IDLE_PRIORITY_CLASS.

By using the above code, the background process will run with the IDLE_PRIORITY_CLASS priority, ensuring it doesn’t interfere with other higher priority tasks.

Conclusion

Setting the IDLE_PRIORITY_CLASS priority with subprocess in Python can be useful when dealing with background tasks that shouldn’t impact the performance of the system. By utilizing the appropriate flags and priority class, you can ensure that your background process runs efficiently in a non-intrusive manner.

Remember to adjust the command variable in the code snippet according to your specific task.