본문 바로가기

Python

(89)
[python] 파이썬 스크립트 백그라운드 수행 (Windows) 리눅스에서는 예전 포스팅에서 알아봤듯이 nohup 및 & 을 통해서 스크립트를 백그라운드에서 수행할 수 있었습니다. 그렇다면 윈도우에서는 어떻게 수행할 수 있을까요? 윈도우에서는 pythonw.exe 파일을 사용하면 백그라운드 수행이 가능합니다. pythonw.exe를 통한 수행 pythonw -u test.py > log.log 2>&1 python이 아닌 pythonw를 통해 스크립트를 수행하면 백그라운드로 수행할 수 있습니다.
[python] 파이썬 스크립트 백그라운드 수행 (linux) 파이썬 프로그램을 백그라운드로 지속적으로 수행해야 하는 경우가 있습니다. 이번 포스트에서 파이썬을 백그라운드로 돌리는 여러가지 방법에 대해 알아봅시다. 단순히 마지막에 &을 붙히는 방법 보통 리눅스에서는 맨 마지막에 &을 붙힘으로써 백그라운드 수행을 할 수 있습니다. # python test.py & [1] 7115 # jobs [1]+ Running python test.py & 하지만 위 방법의 단점은 해당 쉘 또는 터미널이 끊기게 되면 파이썬 job도 사라지게 됩니다. 이렇게 되면 터미널을 통해 명령어를 수행하다가 time out이 걸리게 되면 python job도 사라지게 됩니다. 이를 위해 리눅스에서는 nohup 이라는 명령어를 제공합니다. nohup을 통해 데몬 형태로 실행하기 nohup은 n..
[python] 좀비 프로세스 생성하기 (os.popen) 파이썬의 os 모듈의 popen 함수를 통해 자식 프로세스를 만들고 해당 프로세스를 핸들링 하지 않고, Sleep을 걸어두면 해당 시간 동안 좀비 프로세스를 만들 수 있다. import os import time cmd = os.popen('ps -ef --no-headers').read() time.sleep(1000) $ ps -ef | grep 7733 user+ 7733 6238 0 14:02 pts/27 00:00:00 python test.py user+ 7734 7733 0 14:02 pts/27 00:00:00 [sh] os.popen을 하다보면 위와 같이 좀비프로세스를 생성하는 시나리오를 자주 만날 수 있는데, 이 경우 아래와 같이 해당 프로세스를 명시적으로 close해주는 방식으로 없앴..
[python] 가상환경 venv 생성시 나타나는 The virtual environment was not created successfully 에러 해결법 파이썬에서 특정 버전의 가상 환경을 설치할 때 아래와 같은 에러 메시지가 발생할 때가 있다. # python3.7 -m venv venv The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command. apt-get install python3-venv You may need to use sudo with that command. After installing the python3-venv package, recreate your vi..
[python] byte 단위 변환 코드(byte ->kb, mb, gb, tb, pd, eb) byte를 입력으로 주면 킬로바이트(kilobyte), 메가바이트(megabyte), 기가바이트(giga byte) 단위 등으로 변환하는 코드는 아래와 같다. def byte_transform(bytes, to, bsize=1024): ... a = {'k' : 1, 'm': 2, 'g' : 3, 't' : 4, 'p' : 5, 'e' : 6 } ... r = float(bytes) ... for i in range(a[to]): ... r = r / bsize ... return round(r,2) >>> byte_transform(1073741824, 'g') 1.0 >>> byte_transform(1073741824, 'm') 1024.0 >>> byte_transform(1073741824, '..