스택큐힙리스트

파이썬에서 백그라운드 프로세스를 시작하는 방법은 무엇인가요? 본문

카테고리 없음

파이썬에서 백그라운드 프로세스를 시작하는 방법은 무엇인가요?

스택큐힙리스트 2023. 4. 16. 02:40
반응형

저는 셸 스크립트를 더욱 가독성 좋은 파이썬 버전으로 이식하려고 노력하고 있습니다. 원본 셸 스크립트는 &를 사용하여 여러 프로세스(유틸리티, 모니터 등)를 백그라운드에서 시작합니다. 파이썬에서도 같은 효과를 어떻게 얻을 수 있을까요? 이러한 프로세스가 파이썬 스크립트가 완료될 때 까지 죽지 않도록 하고 싶습니다. 데몬의 개념과 관련이 있을 것으로 생각되지만, 이를 쉽게 수행하는 방법을 찾지 못했습니다.

답변 1

jkp의 해결책은 작동하지만, 더 최근에는 (그리고 문서에서 권장하는 대로) subprocess 모듈을 사용하는 것이 좋습니다. 간단한 명령의 경우 동등하지만, 뭔가 복잡한 것을하려는 경우 더 많은 옵션을 제공합니다.

당신의 경우를 예로 들면:

import subprocess

subprocess.Popen([rm,-r,some.file])

이것은 백그라운드에서 rm -r some.file 을 실행합니다. 반환된 개체에서 .communicate() 을 호출하면 완료될 때까지 차단되므로 백그라운드에서 실행하려면 그렇게하지 마십시오.

import subprocess

ls_output=subprocess.Popen([sleep, 30])

ls_output.communicate() # Will block for 30 seconds

문서를 확인하세요. here.

또한, 명확히 하기 위해, 여기서 사용하는 '배경'은 순수하게 쉘 개념입니다. 기술적으로, 완료될 때까지 대기하는 동안 프로세스를 생성하려는 것을 의미하는 것입니다. 그러나 나는 여기서 배경을 쉘 배경과 비슷한 동작을 가리키는 용어로 사용했습니다.

답변 2

파이썬에서 백그라운드 프로세스를 시작하는 방법은 여러 가지가 있습니다. 이 글에서는 파이썬에서 백그라운드 프로세스를 시작하는 가장 일반적인 방법에 대해 설명하겠습니다.

먼저, 백그라운드 프로세스란 사용자가 실행 중인 프로세스에 영향을 미치지 않고 컴퓨터에서 실행되는 프로세스를 말합니다. 이러한 프로세스를 시작하는 방법 중 하나는 파이썬에서 subprocess 모듈을 사용하는 것입니다.

subprocess 모듈은 다른 프로그램을 실행하는 방법을 제공합니다. 이 모듈을 사용하면 파이썬 프로그램에서 다른 프로그램을 실행할 수 있습니다. 이를테면 다음과 같은 방법으로 실행할 수 있습니다.

```

import subprocess

subprocess.Popen([program, arg1, arg2])

```

위의 코드에서 program은 실행할 프로그램 이름이며, arg1과 arg2는 프로그램이 사용할 인수입니다. subprocess.Popen()은 프로그램을 실행하며 새로운 프로세스를 생성합니다.

이제 이를 백그라운드에서 실행하는 방법을 알아보겠습니다. 백그라운드에서 실행하려면 다음과 같이 코딩해야 합니다.

```

import subprocess

subprocess.Popen([program, arg1, arg2], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)

```

위의 코드에서 Popen() 함수에 전달된 인수 중 stdout, stderr 및 stdin은 표준 출력, 표준 오류 및 표준 입력 스트림을 나타냅니다. 이러한 스트림을 처리하지 않으면, 새로운 프로세스가 기본적으로 대화식으로 실행됩니다. 그러나 스트림을 처리하면 백그라운드에서 실행됩니다.

이제 파이썬에서 백그라운드 프로세스를 실행하는 방법에 대해 알게 되었습니다. 이를 기반으로 자신의 프로그램에서 백그라운드 프로세스를 실행하면 더욱 효과적인 프로그램을 만들 수 있습니다.

반응형
Comments