Python에서 Thread/Process를 강제로 종료시키는 방법을 다루고 있습니다. 일반적으로 스레드나 프로세스를 갑자기 종료하는 것은 좋은 방법이 아닙니다. 왜냐하면 스레드/프로세스가 자원을 사용하던 중에 갑자기 종료되면 자원 해제 처리가 제대로 이루어질 수 없기 때문입니다. 스레드/프로세스를 강제 종료해도 자원 해제나 기타 다른 문제가 생길 가능성이 없다면 사용해볼 여지가 있습니다. 본 포스트는 참고한 글을 기반으로 작성되었지만 대부분의 코드와 글이 원문과 차이가 있습니다. 원문에 있던 예외와 trace 관련 방법은 제외했습니다. 중지 플래그 - 전역변수 중지 플래그 - 이벤트 객체 Using traces to kill threads : 스레드 대신 프로세스 사용 데몬(daemon) 참고 2024..
설치시 다운로드한 Python 패키지가 저장되어 있는 캐시(cache)를 삭제하는 방법을 다룹니다. 2024. 3. 16 최초작성 pip cache에는 pip 명령으로 설치시 다운로드된 Python 패키지나 소스코드로부터 필드된 Python 패키지가 저장되어 있습니다. 때때로 버전 충돌등으로 인해 또는 디스크 공간 절약을 위해 pip cache에 있는 Python 패키지를 삭제해야 할 필요가 생길 수 있습니다. PyTorch나 Tensorflow 등의 패키지를 설치한 경우 pip cache가 많은 디스크 공간을 사용합니다. 다음 명령으로 pip cache 정보를 확인할 수 있습니다. 캐시가 사용하는 경로와 현재 사용한 디스크 크기, 파일 개수 등이 표시됩니다. (base) webnautes@webnaut..
WAV 파일 또는 MP3 파일을 일정 길이(단위 초)의 WAV 파일로 분할하는 코드입니다. 2023. 10. 20 최초작성 2024. 3. 16 import os import librosa import soundfile as sf def split_and_save(wav_path, output_dir, segment_length=30): """ - wav_path : 로드할 WAV 파일 또는 MP3 파일의 경로 - output_dir : WAV 파일들을 저장할 디렉토리 경로 - segment_length : 분할할 세그먼트의 길이 (초 단위, 기본값은 30초) """ # 출력 디렉토리가 존재하지 않으면 생성 if not os.path.exists(output_dir): os.makedirs(output_..
sqlite3 테이블에서 중복값을 찾는 Python 예제코드입니다.2023. 12. 3 최초작성2024. 3. 7 에러처리 코드 추가중복을 검사할 테이블을 생성합니다. import sqlite3database_file_path = 'zodiac.db' table_name = 'zodiac' try: conn = sqlite3.connect(database_file_path) cursor = conn.cursor() print("Database connection successful!")except sqlite3.Error as e: print(f"Database connection failed: {e}") exit()cursor = conn.cursor()query =..
sqlite3 테이블에서 데이터를 검색하는 Python 예제코드입니다.2023. 11. 24 최초작성2024. 3. 7 에러처리 코드 추가기존에 작성된 다음 포스트에서 만든 데이터베이스 테이블을 사용하여 진행합니다. sqlite3 테이블에 데이터 삽입하는 Python 예제코드https://webnautes.tistory.com/2225 import sqlite3database_file_path = 'zodiac.db' # 데이터베이스 파일 이름입니다.table_name = 'zodiac' # 테이블 이름입니다.try: conn = sqlite3.connect(database_file_path) cursor = conn.cursor() print("Databa..
sqlite3 테이블에 있는 레코드 하나를 랜덤으로 보여주는 Python 예제 코드입니다. 2023 11. 22 최초작성2023. 11. 232024. 3. 7 에러처리 코드 추가기존에 작성된 다음 포스트에서 만든 데이터베이스 테이블을 사용하여 진행합니다. sqlite3 테이블에 데이터 삽입하는 Python 예제코드https://webnautes.tistory.com/2225 import sqlite3database_file_path = 'zodiac.db' # 데이터베이스 파일 이름입니다.table_name = 'zodiac' # 테이블 이름입니다.try: conn = sqlite3.connect(database_file_path) cursor = conn...
sqlite3의 테이블에 있는 레코드 개수 세는 Python 예제코드입니다.2023. 11. 21 최초작성2023. 11. 23 2024. 3. 7 에러처리 코드 추가기존에 작성된 다음 포스트에서 만든 데이터베이스 테이블을 사용하여 진행합니다. sqlite3 테이블에 데이터 삽입하는 Python 예제코드https://webnautes.tistory.com/2225 import sqlite3database_file_path = 'zodiac.db' # 데이터베이스 파일 이름입니다.table_name = 'zodiac' # 테이블 이름입니다.try: conn = sqlite3.connect(database_file_path) cursor = conn.cur..
sqlite3 테이블의 스키마(schema)를 출력하는 Python 예제코드입니다. 2023. 11. 25 최초작성2024. 3. 7 에러처리 코드 추가기존에 작성된 다음 포스트에서 만든 데이터베이스 테이블을 사용하여 진행합니다. sqlite3 테이블에 데이터 삽입하는 Python 예제코드https://webnautes.tistory.com/2225 import sqlite3database_file_path = 'zodiac.db' # 데이터베이스 파일 이름입니다.table_name = 'zodiac' # 테이블 이름입니다.try: conn = sqlite3.connect(database_file_path) cursor = conn.cursor() pr..
sqlite3 테이블에 데이터를 삽입하는 Python 예제코드입니다.2023. 11. 23 최초작성2024. 3. 7 에러처리 코드 추가 import sqlite3database_file_path = 'zodiac.db' # 데이터베이스 파일 이름입니다.table_name = 'zodiac' # 테이블 이름입니다.try: conn = sqlite3.connect(database_file_path) cursor = conn.cursor() print("Database connection successful!")except sqlite3.Error as e: print(f"Database connection failed: {e}") exit()..
Python Subprocess 모듈 사용법을 간단히 정리했습니다. subprocess 모듈을 사용하면 파이썬 코드에서 셸 명령을 실행할 수 있고 실행결과의 출력을 가져올 수도 있습니다. 또한 pipe를 사용하거나 입력/출력 리다이렉션을 할 수 있습니다. 기존에 쉘 명령을 실행하기 위해 사용했던 os.system와 os.spawn 등을 대체하여 사용할 수 있습니다. 1. subprocess.run() - 쉘 명령 실행 2. subprocess.run() - 입력 리다이렉션 3. subprocess.call() - 명령 실행 4. subprocess.check_call() - 예외 처리 5. subprocess.check_output() - 실행 결과 캡처 6. subprocess.Popen 6.1. 표준..