[Python] 멀티 쓰레딩 vs 멀티 프로세싱 비교

프로그래밍/Python 2022. 10. 23. 22:35

https://www.youtube.com/watch?v=AZnGRKFUU0c 파이썬에는 GIL(Global Interpreter Lock) 이란게 걸려있어서 여러 쓰레드를 동시에 실행시켜도 결론적으론 한번에 하나의 쓰레드 밖에 실행하지 못합니다. 이런 반쪽짜리 멀티 쓰레딩 덕분에 파이썬이 실제로 욕을 많이먹었죠. 멀티 쓰레딩과 멀티 프로세싱을 비교하는 좋은 영상이 있어서 첨부해봅니다. 실제로 제가 이전에 구현하고 현재도 배포중인 네이버 웹툰 다운로더의 경우에도 파이썬의 멀티 프로세싱 모듈을 이용해 제작했습니다. 사실 개념도 잘 모르고 인터넷에 추천되있는걸 받아와서 사용한거긴 한데 뭐 결론적으론 올바른 선택이 아니였나 싶습니다.

네이버 웹툰 다운로더 v4 (Naver_Webtoon_Downloader) / 초고속 다운로드 지원

프로그래밍/Python 2022. 10. 13. 00:14

Python으로 제작된 웹툰 다운로더입니다. 만든진 꽤 됬는데 웹툰들 유료화 소식을 듣고 생각나서 조금 다듬었습니다. 버그가 있어서 수정하고 성인웹툰까지 다운로드 가능하게 패치했습니다. 문제 있을시 자삭하겠습니다. 메일로 질문사항 보내는 분들이 많은데 피드백은 댓글만 받으려고 합니다. 댓글로 문의사항 남겨주세요. 특징 - DOS 형식의 간결한 디자인 - 병렬처리를 통한 초고속 다운로드 지원(인터넷 상태에 따라 다를 수 있음) => 전편 아카이브 용으로 사용시 매우 빠르고 쉽게 받을 수 있습니다. 사용 방법 1. 파일 압축 해제 후 경로의 NWebtoon.exe 를 실행해주세요. 실행이 되었으면 d를 입력해 다운로드 모드로 진입합니다. 2. 이제 정보를 입력합니다. 정보를 입력하는 방법은 3가지가 있는데 ..

Article Thumbnail
[PyQT5] UI 불러올 때 VSCODE IDE 자동 완성 기능 활성화 하기 (UI 파일 자동 컴파일)

프로그래밍/Python 2022. 9. 18. 21:50

최근에 PyQT로 만든 프로젝트 코드를 리팩토링 하고 있습니다. PyQT 프레임워크를 이용하면 파이썬에서 GUI 프레임워크인 Qt를 쉽게 다루어 GUI 를 쉽게 구현할 수 있도록 해줍니다. 개인적으로 파이썬에서 GUI를 구현할 수 있는 최선의 방법이자 거의 유일한 선택지라고 생각합니다. tkinter 와 같은 파이썬 기본 라이브러리도 있으나 마개조를 거치지 않는 이상 C#의 윈폼보다도 훨씬 구린 디자인이 나옵니다. 반면에 Qt 로 개발하면 무려 CSS를 적용할 수 있는 장점이 있구요 (물론 모든 CSS가 잘 적용되는건 아닙니다만..) 잡담은 여기까지 하고, PyQT로 개발을 하면서 불편한 점은 UI를 불러오고, 그 UI 요소들에 접근할 때 사용할 수 있는 메소드나 데이터들이 IDE에서 자동완성되지 않는점..

Article Thumbnail
디시인사이드 간편 글 검색기(탐색기) v0.15

프로그래밍/Python 2022. 8. 31. 02:38

Python 으로 제작한 디시인사이드 글 검색기 입니다. 프로그램 설명 간단하게 설명드리자면 기존 디시인사이드 사이트의 문제점인 글 검색 시스템을 개선시켜주는 프로그램입니다. 첨부한 사진처럼 디시인사이드는 서버의 부하를 줄이기 위해 글을 10000개 단위로 끊어서 검색하는데 PC는 해당 페이지에서 원하는 데이터가 없으면 다음 검색, 모바일은 다음 글 찾기 버튼 등을 이용해서 노가다로 글을 찾아야 하는데 10000개 단위내에서 찾아낸 글을 페이지 단위로 정렬해서 보여주기 때문에 옛날 글을 찾는게 거의 불가능하고 보기도 매우 어렵습니다. 본 프로그램은 이 노가다를 조금이나마 해소해주는 프로그램으로써, 반복횟수 만큼 페이지, 다음 글 찾기를 자동으로 탐색하며 검색으로 옛날글을 찾는데 도움을 주는 프로그램입니다..

Article Thumbnail
많은 파일을 한꺼번에 폴더로 정리하자! Directory Packager

프로그래밍/Python 2022. 4. 29. 23:19

Directory Packager는 파일을 갯수단위로 묶어서 폴더로 정리해주는 프로그램입니다. 폴더를 묶을때 방식은 순차 작업, 균등 작업, 랜덤 작업으로 총 3가지를 지원합니다. 사용 방법 게임을 하면서 스크린샷을 찍었는데 플레이 타임이 100시간이 넘어가다 보니 파일이 1321개로 상당합니다. 티스토리에 올리려고 보니깐 한번에 50개씩 올리라고 하더라구요? 50개씩 파일 잡으니깐 햇갈리기도 해서 이런 다량의 파일을 파일 갯수 단위로 폴더로 정리해주면 어떨까 해서 한 번 프로그램을 만들어 봤습니다. 폴더 열기를 통해 작업할 폴더를 선택한 뒤, 순차 작업 모드로 50개, 폴더 명은 section_{i} 로 정합니다. {i} 는 자동으로 프로그램에서 붙여주는 번호에 대한 특별한 지정자 입니다. 예를 들어서..

Article Thumbnail
[PyQT5] SFTP를 이용한 만능 자동 업데이트 런처 구현

프로그래밍/Python 2022. 4. 22. 00:36

위 게임은 "서든어택 2"의 게임 런처(실행기) 입니다. 이 게임은 말아먹은 뒤로 매일 SNS에 출시 임박 글이 올라오는 전설의 게임입니다. 대부분의 게임은 위처럼 일반적으로 * 런처라는 프로그램을 이용해서 다운로드, 업데이트, 실행 관리를 합니다. 제가 업무 자동화에 관련된 프로그램을 만들고 배포하면서 이러한 런처를 만들어야 할 상황이 생겼습니다. 매번 업데이트 하고 파일 배포하는게 정말 귀찮더라구요. * 런처 : 다른 소프트웨어를 실행시키기 위해 사용하는 소프트웨어 제가 배포하고 있는 프로그램에 대한 런처를 만들어서 자동 업데이트 하고 실행까지 처리하면 좋을 꺼 같아서 요새 GUI 프로그래밍에 한참 사용하고 있는 PyQt5 프레임워크와 파이썬을 통해서 한번 구현해봤습니다. 사실 이렇게 다운로드를 받을..

Article Thumbnail
[Python] 문자열 한줄씩 읽기

프로그래밍/Python 2022. 3. 26. 02:12

drift professional midnight scatter relevance visit . . . (생략) 다음과 같은 단어 사전을 C++ vector에 하드코딩으로 집어 넣어야 하는 상황이 생겼습니다. 하나씩 콤마찍고 쌍따옴표 넣기는 너무 귀찮죠? 이럴때 파이썬을 이용해서 한번 똑똑하게 바꿔봅시다. dic = """ drift professional midnight scatter relevance visit """.strip() lst = dic.split('\n') print(lst) >>> ['drift', 'professional', 'midnight', 'scatter', 'relevance', 'visit'] """ 를 활용해서 문자열을 전체적으로 넣고 양끝 공백을 strip() 으로 지..

Article Thumbnail
[Python] *** is deprecated and will be removed from ***!!!!

프로그래밍/Python 2022. 2. 3. 00:48

파이썬 2 에서 파이썬 3 올라갈때만 해도 C++이랑 다르게 호환성을 버린 대신 언어 성능을 나름 극적으로 개선했었죠. 이제 파이썬 3 에서 버전 업그레이드가 있을때마다 잘 작동하던 모듈(라이브러리)이 펑펑 터져버리는 문제가 있었는데.. 메이저한 라이브러리들은 이런 문제가 많이 없다만 라이브러리 개발자들이 일을 너무 잘해서 그런가 사용 함수 이름을 자꾸 바꾸거나 개선 시키는 바람에 저렇게 deprecated 경고가 계속 뜨네요 ㅡ.ㅡ 나중에 버전 올라가면 원래 코드는 제대로 작동도 안할태니 방침대로 바꿔줘야 하는데.. Selenium 에서 find_element_by_css_selector 대신에 find_element(By.CssSelector.... 로 바뀐건 좋은 개선이라고 생각합니다만 Pandas..

Article Thumbnail