본문 바로가기
반응형

대동단결 Python31

통신을 위한 바이트 편집에 관한 python 바이트 내부 비트 순서에 관한 용어MSB (Most Significant Bit): 가장 왼쪽 비트LSB (Least Significant Bit): 가장 오른쪽 비트MSB-first: 가장 왼쪽 비트 부터 처리됨을 의미LSB-first: 가장 오른쪽 비트 부터 처리됨을 의미크기가 2바이트 이상 데이터를 메모리에 저장할 때 바이트 순서에 따른 용어4바이트 숫자 0x12345678를 예로 들어MSB(Most Significant Byte): 가장 중요한 바이트 = 가장 큰 단위 숫자에 해당하는 바이트 = 가장 왼쪽 바이트. 이때 B 가 bit가 아니라 byte임에 주의 , 예에서 0x12LSB(Least Significant Byte): 가장 덜중요한 바이트 = 가장 작은 단위 숫자에 해당하는 바이트 = .. 2024. 9. 3.
파이썬을 위한 비동기 멀티테스킹 asyncio 사용하기 Python의 asyncio 라이브러리는 비동기 프로그래밍을 위해 제공되는 표준 라이브러리입니다. 비동기 프로그래밍은 주로 I/O 바운드 작업(예: 네트워크 요청, 파일 읽기/쓰기 등)에서 효율성을 높이기 위해 사용됩니다. asyncio를 사용하면 프로그램이 블로킹 없이 동시에 여러 작업을 수행할 수 있습니다.기본 개념코루틴 (Coroutine): 비동기 함수로, async def로 정의됩니다. 코루틴은 await 키워드로 다른 코루틴이나 비동기 함수의 실행을 일시 중지하고 제어를 이벤트 루프로 반환할 수 있습니다.이벤트 루프 (Event Loop): 비동기 작업을 관리하고 실행하는 핵심 구성 요소입니다. 이벤트 루프는 등록된 모든 코루틴과 비동기 작업을 순차적으로 실행합니다.태스크 (Task): 이벤트.. 2024. 7. 19.
JSON으로 직렬화할 수 있는 Python 데이터 타입 Python에서 JSON (JavaScript Object Notation)은 데이터를 직렬화하고 역직렬화하는데 매우 유용한 형식입니다. Python의 json 모듈을 사용하여 다양한 데이터 구조를 JSON으로 변환(직렬화)하거나 JSON 문자열을 Python 객체로 변환(역직렬화)할 수 있습니다.JSON으로 직렬화 및 역직렬화할 수 있는 Python 데이터 타입과 그 예시는 다음과 같습니다:기본 데이터 타입:int, float, str, bool, Noneimport jsonnumber = 42text = "Hello, world!"boolean = Truenone_value = Nonejson_number = json.dumps(number)json_text = json.dumps(text)json_.. 2024. 7. 12.
모듈 일괄 설치 다음은 PIP와 함께 사용하는 명령어 이다.Commands: install Install packages. download Download packages. uninstall Uninstall packages. freeze Output installed packages in requirements format. inspect Inspect the python environment. list List installed packages. show .. 2023. 12. 19.
라즈베리파이 파이썬 업그레이드 라즈베리파이에는 파이썬이 설치되어 있다. pi@raspberrypi:~ $ python -V Python 2.7.16 pi@raspberrypi:~ $ python3 -V Python 3.7.3 파이썬의 새 버전은 소스파일 형태로 받아 직접 설치해야 한다. 파이썬 홈페이지에서 원하는 파일을 다운로드 한 뒤 압축을 풀고 생성된 디랙토리로 간다. 이 작업은 라이베리파이 데스크 탑에서 무난하게 처리할 수 있다. 1. 컴파일 전 설정파일돌리기 ./configure --enable-optimizations 이 과정은 로컬 계정으로 실행해도 된다. 2. 컴파일하기 sudo make altinstall 3. 설치가 완료되면 /usr/local/bin 에서 확인할 수 있다. 2023. 7. 27.
파이썬의 데코레이션 이란? 파이썬에서, 데코레이션은 함수, 클래스 또는 메소드에 추가적인 기능을 제공하기 위해 사용되는 것입니다. 데코레이터는 기존의 코드를 변경하지 않으면서, 기능을 추가하거나 향상시키는 것을 가능하게 합니다. 데코레이션은 중첩될 수 있어, 하나의 함수에 여러 개의 데코레이터를 적용할 수 있습니다.데코레이션은 @decorator 구문을 사용하여 적용됩니다. 예를 들어, 다음은 함수에 데코레이터를 적용하는 예제입니다:def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after .. 2023. 2. 4.
pygame에서 한글입력 컴포넌트 만들기 pygame 실행환경에서는 한글을 자유롭게 출력할 수 있다. 그러나 한글을 입력하기는 어렵다. 물론 소스코드 내부에서 한글을 자유롭게 사용할 수 있지만, pygame실행중 직접 한글입력 구현은 어렵다. 그 이유는 다음과 같이 생각해 볼 수 있다. python(적어도 pygame에서) 에서 한/영키를 인지 할 수 없다. python에서 한글 텍스트의 입력은 외부 시스템(예를들어 윈도우즈 같은 OS system)에 의존한다. 즉, python에서 한글을 입력할 때는 OS에서 제공하는 오토마타 부터 유니코드를 받아올 뿐이고 그것을 제어하는 어떤 함수가 없다. 그렇다고 해서 일반적인 파이썬 애플리케이션에서 한글을 입력하는것이 문제되지는 않다. 다만 pygame 내부에서 한글을 입력받기 위해서는 여러 키로부터 한.. 2022. 9. 8.
Thread간 정보 공유를 위한 Queue Queue는 복수의 정보를 저장할 수 있는 저장공간이다. 리스트와 유사한 개념이므로 리스트로 Queue를 구현해 사용할 수도 있다. queue는 단일 쓰레드에서 사용할 수도 있는데, 그보다는 멀티쓰레드 그 진가를 발휘한다.  패키지 queue에서 제공하는 Queue 클래스는 thread간 정보를 공유할 수 있도록 쓰레드락을 사용한다. 우리는 이것을 이용하여 멀리쓰레드 환경에서 큐를 안전하게 사용할 수 있다. 다음과 같은 작업을 가정하자.메인쓰레드에서는 작업할 데이터를 추가하기만 한다. worker라는 서브쓰레드를 두어 메인쓰레드에서 추가한 데이터를 처리하는 일을 도맏는다. 두 작업은 디커플되어 있고, 서로에게 작업지연현상을 야기시켜서는 안된다. 다음은, 리스트로 구현된 큐를 사용한 코드이다.import .. 2022. 5. 20.
함수의 가변인자 와 *(별표)연산자 def test(*args, **kwargs): print(args) print(kwargs) test(1,2,3, temp=23, ttemp=45) (1, 2, 3) {'temp': 23, 'ttemp': 45} 어떤 함수의 인자(parameters)를 특정지을 수 없을 때 *를 포함한 변수명으로 받을 수 있다. 위 예에서 함수 test 는 *args, **kwargs의 변수명으로 인자를 받는다. args는 arguments의 약자로, kwargs는 keyward arguments의 약자로 사용되었으나, 이름은 파이썬 문법이 허용하는 어떤 이름이든 상관없다. 중요한 것은 별표하나 와 별표두개이다. 별표하나의 변수명 즉 *args로 전달되는 인자는 모든 위치형 인자(posit.. 2022. 5. 14.
pyinstaller 사이즈 최적화 pyinstaller size 문제 pyinstaller는 python 모듈로써 python으로 작성된 스트립트 파일을 직접 실행이 가능한 exe 파일로 변환한다. 이것은 C언어 처럼 소스파일을 컴파일하는 개념이 아니라, python 환경과 사용자가 작성한 스크립트 파일을 묶어 독립적인 실행파일로 변환한 것이다. 겉보기에는 하나의 실행파일 처럼 보이나, 그 파일에는 python 실행환경이 내장되어 있다. 파이썬을 사용하다 보면 다양한 모듈들을 설치하게 되고, 특히 아나콘다처럼 대형 배포판으로 파이썬이 설치되었을 경우 파이썬 실행환경이 매우 많은 파일로 구성되어 비대해진다. 이럴때 pyinstaller로 만들어진 사용자 실행파일은 그 용량이 쓸데없이 커지고 실행시키면 로딩시간이 길어 불편하다. 이 때 실행.. 2022. 4. 16.
pyautogui정리 마우스와 키보드 사용 import pyautogui import pyperclip # 모니터 화면의 사이즈 print(pyautogui.size()) # 현재 마우스 포지션 print(pyautogui.position()) # 마우스 포이터 이동 pyautogui.moveTo(100, 200) # x 100, y 200 위치로 바로 이동 pyautogui.moveTo(100, 200, 2) # x 100, y 200 위치로 2초동안 이동 # 마우스 클릭 pyautogui.click() # 좌클릭 pyautogui.click(button='right') #우클릭 pyautogui.doubleClick() # 더블클릭 pyautogui.click(clicks=3, interval=1) # 3번.. 2022. 4. 14.
메뉴엑션에 한글이름메쏘드 연결하기 : lambda 파이썬에서 한글이름의 변수명 또는 클래스명등 거의 모든 이름에 한글을 사용해도 무방 한 듯 하다. 그런데 메뉴액션에 연결할 메쏘드명에서 한글을 사용하면 프로그램이 제대로 실행되지 않은 채 별 에러메세지 송출없이 끝난다. 예를들어 아래의 코드를 실행하면 import sys from PyQt5.QtWidgets import * class Mywin(QMainWindow): def __init__(self): super(Mywin, self).__init__() menubar = QMenuBar(self) menu = menubar.addMenu('메뉴') action = QAction('그 함수 실행', self) action.triggered.connect(self.한글메소드명) menu.addAction.. 2021. 11. 16.
QThread 분산처리 : 작업처리후 자동소멸 PyQt5 GUI환경에서 작업이 비동기적으로 실행되어야 하거나, 분산처리 되어야 할 경우 Threading.Thread() 보다는 PyQt5.QtCore.QThread()를 이용하는 것이 바른 선택인것 같다. 왜냐하면 PyQt5 GUI 환경하에서 Threading.Thread 오브젝트가 작업량이 많아 시간이 수초 이상 소요되는경우에는 GUI 환경이 종종 '응답없음' 상태로 빠지기 때문이다. 이번 코드는 QThread로 정의된 쓰레드 워커(worker)들을 실행하면 스스로 실행을 마친 후 소멸하도록 한다. 필요한 모듈들 import sys from PyQt5.QtCore import QThread, QMutex from PyQt5.QtWidgets import QApplication QThread 만들기 .. 2021. 11. 5.
사용자 정의 시그널 만들기 시그널이란 객체는 시그널을 발생 시키는 위치에서 슬롯함수를 호출하도록 설계되어 있다. 즉, 해당 위치에서 함수를 호출한 것과 동일하게 동작된다. 먼저 시그널을 사용하기 위해 패키지가 필요하다. from PyQt5.QtCore import * 시그널을 만든다. 중요한 것은 시그널은 클래스변수이어야 하고, 시그널을 포함하는 클래스는 QObject 또는 그 후손이어야 한다. class 클래스명(QObject): 시그널명 = pyqtSignal(변수타입) 이 시그널이 동작되기 위해서는 반드시 클래스가 객체화 되어야 한다. 시그널은 (살아있는) 객체에서만 의미가 있기 때문이다. 변수타입으로는 다음과 같은 것들이 있다. bool(boolean) : 참, 거짓 두가지 값을 표현 int(integer) : 정수 flo.. 2021. 9. 11.
사용자 정의 시그널-슬롯 pyQt5기반의 파이썬 GUI 프로그래밍에는 시그널과 슬롯 이라는 개념이 있다. 예컨데 버튼을 클릭하는 순간 버튼이 클릭되었다는 시그널(이벤트 시그널)이 발생되고, 그 때 실행할 함수를 슬롯(콜백함수) 이라 한다. pyQt5에서 제공하는 모든 GUI 객체들은 제 나름대로의 필요한 시그널 들이 정의 되어 있다. 여기서는 사용자 정의 시그널을 만들고 사용해 본다. 참조문서 Support for Signals and Slots - PyQt 5.7 Reference Guide Qt의 주요 기능 중 하나는 시그널과 슬롯을 사용하여 객체간에 통신하는 것. 시그널이 발생하면 그 때 실행해야할 함수가 실행된다. 그 함수를 슬롯이라 한다. 이것이 가능하도록 시그널과 슬롯을 연결하여야 한다. signal/slot 메커니즘.. 2021. 5. 14.
반응형