[파이썬] subprocess `Popen.wait()`: 프로세스 완료 대기

In Python, the subprocess module provides a way to create new processes, execute system commands, and interact with their input/output streams. One of the methods available in subprocess is Popen.wait(), which allows us to wait for a process to complete before continuing with the rest of the program.

Understanding Popen.wait()

The Popen.wait() method is used to wait until the subprocess created using the subprocess.Popen class finishes its execution. It blocks the execution of the current process until the called process terminates.

Here’s the basic syntax for using Popen.wait():

import subprocess

# Create a subprocess using Popen
process = subprocess.Popen([command], [arguments])

# Wait for the process to complete
process.wait()

In the above code, [command] represents the system command or the executable you want to run, and [arguments] represent any additional arguments required by the command.

Example Usage

Let’s consider a simple example where we want to execute a command that creates a new file using the touch command. We will use Popen.wait() to wait for the file creation process to complete before displaying a success message.

import subprocess

file_name = "new_file.txt"

# Execute the touch command to create a new file
process = subprocess.Popen(['touch', file_name])

# Wait for the process to complete
process.wait()

print(f"File '{file_name}' created successfully!")

In the above code, we create a new file named new_file.txt using the touch command. By calling process.wait(), the program pauses and waits until the file creation process is complete. Once the process finishes, the success message is printed.

Conclusion

The subprocess.Popen.wait() method allows us to synchronize the execution of our program with the completion of subprocesses. It ensures that the current process waits until the called process terminates before proceeding further. This can be useful when dealing with time-sensitive operations or when you need to coordinate the execution of multiple processes.

By understanding and utilizing Popen.wait(), you can have better control over subprocess execution in your Python programs.