분류 전체보기 99

win32com 모듈 ssh 미동작 에러

진행과정airflow에서 sshoperator를 통해 윈도우에 있는 [2]hwp_to_pdf.py 파일을 동작시킴. task 실패 코드는 아래와 같음hwp_to_pdf = SSHOperator( task_id='hwp_to_pdf', ssh_conn_id='ssh_default', command=f'cd {default_path} && poetry shell && python [2]hwp_to_pdf.py', # Windows 경로에서 Python 스크립트 실행 명령어 conn_timeout=30, # 연결 시간 초과 설정 cmd_timeout=60, # 명령 시간 초과 설정 )정확한 위치를 확인하기 위해 곳곳에 실행 로그를 추가..

airflow.cfg 상세 분석

[core]# 컨테이너 내에 dag를 저장하는 경로# 이 경로는 절대 경로여야 합니다.dags_folder = /opt/airflow/dags# 호스트 이름을 결정하는 데 사용되는 호출 가능한 경로를 제공합니다.# 호스트 이름은 DAG 실행 및 로깅, 웹 인터페이스에서의 표시, 이메일 알림 및 알림 메시지, 로그 및 지표 수집 시의 식별에 사용됨# 형식은 "package.function"입니다.# 예: 기본값 "airflow.utils.net.getfqdn"은 patched 된# 버전의 socket.getfqdn()의 결과를 나타냅니다 - https://github.com/python/cpython/issues/49254.## 함수에서 인수가 필요하지 않아야 합니다.# 호스트 이름으로 IP 주소를 사용하..

poetry 환경에서 GPU(CUDA) 사용 가능하게 하기

배경conda로 cuda를 설치하는건 많았는데, poetry 환경에 CUDA를 설치하기가 생각보다 어려웠다.실습환경파워쉘의 프로젝트 가상환경 활성화(poetry shell) 이후 입력창과정poetry add가 먹히지 않기 때문에, 소스로부터 cuda를 추가해야한다.본인 컴퓨터에 맞는 cuda 버전 확인 (아래 링크 참조)티스토리CUDA 현재 날짜 기준 최신 12.5이지만, 동작하지 않았다. 11.8 추천11.8 버전에 맞는 모듈들 설치poetry 가상환경 활성화CUDA 11.8에 맞는 모듈 모음 링크를 소스로 등록위에 등록한 소스로부터 torch, torchvision, torchaudio 이 세 패키지를 가져와 설치PS C:\Users\project> poetry shell(.venv) PS C:\Us..

나만의 코드 규칙 정립

요약 코드 규칙파이썬에서 네이밍 컨벤션(변수 이름) PEP 8 으로 한다.타입헌팅을 통해 선언해, 가독성, 유지보수 높인다.변수 어노테이션 통해 선언해, 가독성, 유지보수 높인다.PEP 8자세한 내용 : https://peps.python.org/pep-0008/들여쓰기 규칙은 VS코드 쓰면 자동으로 조정됨코드 작성 후 black, YAPF 모듈을 통한 자동 수정pip install blackblack your_script.py타입헌팅파이썬은 자료형을 선언 안해도 되는데, 자료형을 선언하는걸 타입헌팅이라고 함함수 타입헌팅 (PEP 484) 변수 어노테이션(PEP 526) 정적 타입 검사 도구(MyPy 등)와 통합하여 코드에서 타입 관련 오류를 미리 발견할 수 있습니다변수 이름 규칙경로 변수는 앞에 pa..

도커 컨테이너에서 외부 셀레니움 실행 3

목표저번까지는, 예제 코드를 실행시켰는데, 실제 셀레니움 코드를 실행 시켜보자.과정처음 dag 코드 실패(그런데 vscode에서 실행했을땐 동작했었다 ;;)run_external_script = SSHOperator( task_id='run_external_script', ssh_conn_id='ssh_default', command='python C:\\script\\my_script.py' )외부의 스크립트를 실행한거라 오류 내용이 출력이 안됨. 따라서 오류 로그를 출력하는 메모장을 추가"python C:\script\my_script.py > C:\script\log.txt" : 우선 my_script.py를 실행하고 그 출력내용을 log.txt로 보내"2>&1" : (..

스레드와 프로세서의 구조적 차이

배경병렬 연산을 하기 위해 알아보다가 파이썬 모듈인 ProcessPoolExecutor , ThreadPoolExecutor를 알게됨처음에 의도한 병렬 연산은 ProcessPoolExecutor 였고, ThreadPoolExecutor은 i/o작업에 특화됐다는걸 알수있었다.이런 용도의 차이를 만들어 내는 구조적 차이를 알고자 한다. 용어정리프로그램프로그램이 실행되면 프로세스 인스턴스가 생성된다. 인스턴스가 생성된다는 의미는 프로그램 실행에 필요한 내용이 컴퓨터 메모리(Ram)에 적재된다는 뜻이다.프로세스: 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태, 여러 크롬창중 하나를 닫으면 프로세스 하나가 닫힌다.스레드의 탄생 : 프로세스 하나만을 사용하기 때문에 다운이 완료될때까지 하루..

파이썬 병렬 스레드 연구

배경 및 결론이전 포스트에서 ProcessPoolExecutor'가 ThreadPoolExecutor보다 압도적인 성능을 보였다. 그렇다면 ThreadPoolExecutor는 언제 사용하는게 좋은가? 결론적으로 ThreadPoolExecutor가 ProcessPoolExecutor보다 유리한 상황은 주로 I/O 바운드 작업이나 덜 CPU 집약적인 작업을 수행할 때이다.1. I/O 바운드 작업작업 특성: 파일 읽기/쓰기, 네트워크 요청, 데이터베이스 통신 등의 I/O 바운드 작업은 실제 CPU 계산보다 데이터를 읽거나 쓰는 데 시간이 더 많이 소요됩니다. 이러한 작업에서는 CPU 사용률이 높지 않기 때문에 프로세스 간의 오버헤드가 불필요할 수 있습니다.효율성: 스레드는 프로세스에 비해 생성 시간과 자원 사..

파이썬 병렬 실행 연구

배경내 CPU가 6코어이기 때문에 이를 최대한 활용해보고 싶다.ThreadPoolExecutor로 병렬실행 확인해보기import concurrent.futuresimport timedef long_running_task(): time.sleep(1)def run_parallel_tasks(max_workers): print(f"Running with {max_workers} workers...") start_time = time.time() # 시작 시간 기록 with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor: # futures 객체 리스트를 생성 for _ in ..

비동기 프로그래밍(asyn,aiohttp, aiofiles,aiomysql)은 뭘까?

배경 : 언어모델 동작 시간이 너무 길어서, 더 빠르게 할수 있는 방법이 있나 찾아보다 봤다.결론적으로 내가 찾던것과 관련은 없었지만, 코드를 효율적으로 실행하는 중요한 기술. 뭔데?프로그램이 I/O 작업은 CPU 등에 비해 매우 느리기 때문에 이 작업을 기다리는 동안 다른 작업을 못하는건 비효율적즉 결과를 기다리는동안 다른 작업도 가능하게 해서 전체적인 프로그램의 효율성을 향상특히 I/O 바운드 작업(예: 네트워크 요청, 파일 입출력, sql 비동기연산 등)을 처리할 때 유용 구체적인 예 1( 비동기 HTTP 요청)import asyncioimport aiohttp # 비동기 HTTP 클라이언트async def fetch_data(url): print("HTTP 요청 시작:", url) a..

(python 설치 에러) A newer version of the Python launcher is already installed

배경ollama 프로젝트중에 알수없는 에러로 진행안됨.알고보니 python 3.12였는데, 3.11.5로 다운그레이드하면 의존성이 더 좋다는 후기가 들림python 3.11.5를 다운받아 설치하는데 에러가 뜸A newer version of the Python launcher is already installed 과정프로그램 추가제거에서 3.12버전 삭제 후 3.11.5 재설치같은 에러재부팅 후 재설치 같은에러프로그램 추가제거에 python launcher도 있길래 얘도 삭제3.11.5 재설치 성공  결론python 버전을 다운그레이드 할땐, python launcher까지 같이 삭제시켜주자