[파이썬] subprocess `subprocess.NORMAL_PRIORITY_CLASS`: 정상 우선 순위 설정

In certain scenarios, we may need to adjust the priority of a process to optimize system resources. In the context of Python, subprocess is a powerful module that allows us to execute system commands and manage processes. In this blog post, we will explore the concept of setting the Normal Priority Class for a process using the subprocess module in Python.

What is Priority Class?

In operating systems, each process is assigned a priority class that determines the amount of CPU time it receives. The priority class is a metric used to assign importance to processes, allowing the operating system to allocate system resources efficiently. The priority range can differ between operating systems, but generally, a lower value indicates a higher priority.

The subprocess Module

The subprocess module in Python provides a way to spawn new processes, connect to their input/output/error pipes, and obtain their return codes. It allows us to execute system commands, scripts, and applications from within our Python programs.

Adjusting Priority Class with subprocess

To adjust the priority class of a process, we can utilize the parameter creationflags and the subprocess.CREATE_NEW_PROCESS_GROUP constant available in the subprocess module. Additionally, we can set the normal priority using the subprocess.NORMAL_PRIORITY_CLASS constant.

Below is an example that demonstrates the process of setting the normal priority class in Python using subprocess:

import subprocess

def set_normal_priority(command):
    process = subprocess.Popen(command, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.NORMAL_PRIORITY_CLASS)
    process.wait()

# Example usage
set_normal_priority(['python', 'my_script.py'])

In the example above, the subprocess.Popen function is used to spawn a new process with the specified command. The creationflags argument is used to set additional flags for the process creation, including the priority class.

By combining the subprocess.CREATE_NEW_PROCESS_GROUP and subprocess.NORMAL_PRIORITY_CLASS constants within the creationflags argument, we can ensure that the spawned process has a normal priority class.

Finally, the process.wait() function is called to wait for the process to finish execution. This is necessary to prevent the parent process from terminating before the child process completes.

Summary

Adjusting the priority class of a process can be beneficial in scenarios where it is necessary to allocate system resources efficiently. The subprocess module in Python provides the necessary functionality to set the priority class of a spawned process.

In this blog post, we have explored the concept of setting the normal priority class using the subprocess module. We have provided an example demonstrating how to utilize the creationflags argument and the subprocess.CREATE_NEW_PROCESS_GROUP and subprocess.NORMAL_PRIORITY_CLASS constants to achieve this.

By understanding and utilizing the capabilities of the subprocess module, we can gain better control over our processes and optimize the utilization of system resources.