IT/python 53

[python3] 셸 명령 파싱하기 성능 비교

기존에 파이썬 cpu 온도 얻어오는 코드가 awk 를 두번 돌려서 파싱하는 구조로 되어 있었습니다. vcgencmd measure_temp 명령 결과를 파이썬에서 파싱해도 되는데 뭐가 성능이 더 좋을까 하는 궁금증이 생겼습니다. pi@RPwiznet013:~/wiznet/skp_arhis/app $ python3 Python 3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import subprocess >>> ret, res = subprocess.getstatusoutput("vcgencmd measure_te..

IT/python 2024.01.05

[fastapi] main.py 가 아닌 test.py 실행하기

fastAPI 를 잘 몰라서 헤매다가 이 단순한 내용을 기록용으로 남깁니다... 저는 fastapi_test.py 라는 파일을 실행시키려고 합니다. 그 파일 안에 다음 내용이 들어 있습니다. app = FastAPI() 기존에는 main.py 를 uvicorn main:app --reload 명령으로 실행시켰습니다. 그러면 main.py 가 없이 fastapi_test.py 를 실행하려면 어떻게 해야 할까요? uvicorn fastapi_test:app --reload 이 간단한 명령을 몰라서 엄청 삽질했습니다.. ㅎㅎ 참고로 현재 실행하는 디렉토리가 소스가 위치한 곳과 다르다면 이를 앱 이름에 반영해줘야 합니다. 현재 디렉토리 하위에 examples 안에 fastapi_test.py 가 존재하고 이를 ..

IT/python 2023.12.12

[python3][pyaudio] 초기화 디버그 메시지 숨기기

pyaudio 를 쓰면서 좀 짜증아 났던 부분이 강제적인 디버그 메시지를 봐야 한다는 것입니다. 구현한 프로그램이 시스템의 서비스로 등록되면 해당 메시지가 syslog 를 당당하게 차지하기도 합니다. 보통은 /usr/share/alsa/alsa.conf 파일이나 ~/.asoundrc 파일이나 /etc/asound.conf 설정이 문제가 있어서 발생하는 메시지라고 합니다. 가장 좋은 것은 최적화된 설정을 찾아서 고치는 것이겠죠.. 고치지 않아도 동작 잘 되고, 위의 alsa 설정 고치기도 머리 아프고, 지저분한 것이 싫은 경우에는 에러 핸들러를 비워주면 해당 메시지 없이 사용할 수 있습니다. #!/usr/bin/env python from ctypes import * import pyaudio # c 언어..

IT/python 2023.10.18

[python3] 터미널에서 한 줄로 if else 사용하기

가끔 터미널에서 작업을 할 때 bash 로 작성하기에는 짜증나고 python 으로 하면 금방 처리되는 경우가 있습니다. 파이썬 명령이 길어지는 경우 파일로 작성해서 터미널에서 실행하면 가장 간단한데, 가끔 파일 자체를 작성할 수 없는 경우가 있습니다. 이런 경우 터미널에서 python -c '파이썬 명령들' 로 실행을 할 수 있는데 단순 한줄짜리 명령들은 세미콜론 ; 을 사용해서 여러 명령을 입력할 수 있었는데 if else 등은 할 줄 몰라서 못했었습니다. 그냥 대충 써보면 개행이 잘못되었다든지 문법이 틀렸다든지의 오류가 발생했었습니다. 인터넷을 뒤져 찾아낸 방법은 python -c $"파이썬 명령1\n파이썬 명령2\n..." 형태로 쓰면 정상적으로 실행되는 것을 확인할 수 있었습니다. 예를 들면 if..

IT/python 2023.10.06

[python3] asyncssh + nohup command

원격으로 작업을 할 일이 생겼습니다. 시간이 좀 걸리는 파이썬 패키지 설치 작업이었습니다. 이를 여러 장비에다 설치하려고 하는데 기존 코드는 장비 하나하나 일일이 접속해서 패키지도 하나하나 다 설치 완료 해야 다음 항목으로 넘어갈 수 있었습니다. 각 장비에서 소요되는 시간은 3분이 채 안되는데 전체 장비가 400여대 가까이 되니 1200분... 즉 20시간이 소요되는 겁니다... 이를 줄여보고자 며칠 째 집에도 제 때 못들어가고 작업하다가 대충 동작하는 코드를 완성해서 그 일부를 공유합니다. connect 인자는 대충 아실겁니다. known_hosts=None 은 등록되지 않은 장비에 접속할 때 known_hosts 에 등록할 것인지 물어보게 되는데 (ssh 명령으로는 -o StrictHostKeyChe..

IT/python 2023.09.22

[python] 문자열 뒤집기

기록용으로 남깁니다. 쉬운 내용인데 가끔 가물가물해서 정리합니다. 문자열이 s = "God is my judge" 일 때 s[::-1] 로 뒤집힌 값을 얻을 수 있습니다. 참고로 이 슬라이스 인덱싱은 [시작위치:끝위치:step/stride/보폭] 으로 지정할 수 있습니다. 끝위치 전까지로 끝위치 문자는 포함되지 않습니다. s 는 s[0::1] 과 같습니다. 다른 방법(for 를 사용한 c 방법, 리스트로 변환하는 방법)들이 있지만 이 방법만 기억하셔도 좋을 것 같습니다. 깔끔하니까요!!

IT/python 2023.06.19

[python][colab] 구글 드라이브 로그인하고 파일 접근하기

기록용으로 남깁니다. 구글 코랩에서 ipynb 파일 같은 것을 열었을 때 구글 드라이브에 있는 데이터 파일에 접근할 수 있습니다. from google.colab import drive import pandas as pd drive.mount("/content/drive") df = pd.read_csv("/content/drive/MyDrive/abcd.csv") 먼저 google.colab 의 drive 를 import 합니다. 코랩 안에서는 당연히 별도의 설치 없이 사용할 수 있습니다. 그 외의 환경에서는 멍개님의 글 과 같이 복잡한 방법이 필요합니다. drive.mount("/content/drive") 명령으로 마운트 명령을 내리면 구글 계정 연동 페이지 뜨면서 권한 묻고 할 겁니다. 내가 쓰려..

IT/python 2023.05.31

[python3] 파이썬 프로세스 중복 실행 여부 확인

def check_duplicate_execution(exact_python_file_name, pid): for p in psutil.process_iter(): cmd = p.cmdline() if cmd and exact_python_file_name in cmd and p.pid != pid: return True return False 파라미터는 비교할 파이썬 파일 이름인데 여기에서는 이것을 실행한 내 프로세스의 파일 이름을 전달합니다. psutil.process_iter() 로 psutil.Process객체를 하나씩 가져와서 cmdline() 으로 얻어온 명령 줄에 해당 이름이 존재하는지 확인가능합니다. cmdline() 은 리스트로 되어 있습니다. 보통은 파이썬 스크립트 이름은 cmdline..

IT/python 2023.05.24