본문 바로가기

반응형

Python

(43)
[Python] Python 병렬처리 - threading (1) [threading - Thread-based parallelism] threading 모듈은 _thread 모듈 위에 high-level threading interface를 구축하는 모듈이다. ■ Cpython implementationo detail CPython에서는 GIL로 인해서 하나의 파이썬 코드에서 하나의 스레드밖에 사용할 수 없다. 그렇기 때문에 멀티 코어의 연산자원을 효율적으로 사용하기 위해서는 multiprocessing이나concurrent.futures.ProcessPoolExecutor를 사용하는 것이 좋다. 반면에 I/O 병목 작업을 동시에 작업하는 경우에는 threading을 사용하는 것이 유리하다. ■ threading functions threading.active_cou..
[Python] Asterisks(*) in Python 파이썬 예제들을 찾아보던 중에 **option과 같은 문법을 발견하였다. 마치 c언어의 포인터와 같이 변수의 앞에 위치하고 있는 asterisk의 의미에 대해서 조사하면서 이외에 파이썬에서 asterisk를 사용하는 방법들에 대해서 살펴보았다. 1. 곱셈, 거듭제곱 연산 기본적으로 곱셈을 위한 연산자로 *를 많이 사용한다. 2 * 5# 10 또한 asterisk를 두개 붙여 사용하여서 거듭제곱 연산자로 사용한다. 2 ** 3# 8 4 ** 2# 16 2. iterable arguments의 unpacking 함수의 argument로 iterable한 값이 입력되었을 때 *를 사용해서 unpacking 할 수 있다. fruits = ['lemon', 'pear', 'watermelon', 'tomato']..
[Python] 비동기 프로그래밍 (asyncio) ■ Synchronous vs Asynchronous - Synchronous programming (동기 프로그래밍) : 주어진 task들을 순차적으로 실행하는 프로그래밍 방식. 하나의 작업이 수행중이면 그 다음 작업은 수행 완료까지 대기한다. - Asynchronous programming (비동기 프로그래밍) : task들을 병렬적으로 수행하는 프로그래밍 방식. 먼저 실행된 작업이 완료되지 않아도 다음 작업이 대기하지 않고 수행된다. ■ Event Loop 이벤트 루프는 작업들을 루프(반복문)를 돌면서 하나씩 실행시키는 역할을 합니다. 만약 실행된 작업이 특정한 데이터를 요청하고 응답을 기다려야 한다면, 이 작업은 다시 이벤트 루프에 통제권을 넘겨줍니다. 통제권을 받은 이벤트 루프는 다음 작업을 실..
[Python] 프로젝트 패키징 & 배포 패키징이란? 패키징이란 모듈별로 생성한 실행 파일들을 하나로 합쳐서 배포 및 설치가 가능한 파일을 만드는 것이다. 파일을 패키징하는 이유는 다른 환경에 소프트웨어를 배포하기 위함이기에 다음과 같은 질문에 대해서 고려하여 패키징을 진행해야한다. - 소프트웨어를 사용할 사람이 누가 될 것인가? 패키징한 소프트웨어를 누가 설치할 것인가? - 소프트웨어가 어떤 환경에 배포되고 실행될 것인가? (서버, 데스크탑, 모바일 등등) - 소프트웨어는 독립적으로 설치가 될 것인가, 아니면 다른 배포 시스템에 연계되어서 설치될 것인가? 패키징한 파일을 배포할 환경에 대한 다양한 요인들에 대해서 고려해서 패키징을 진행해야한다. Python packaging 1. metadata 설정 1-1. setup.py 설정 setup...
[Python] 객체 LifeCycle과 Garbage Collection (Reference Counts) ■ 객체의 생명주기 (Object LifeCycle) - 객체의 생성부터 파괴, 해제까지의 기간 1) Allocating memory space 2) Binding or associating methods 3) Initialization 4) Destruction ■ 파이썬의 생명주기 1) Definition - Python Interpreter에서 class를 정의한다. 2) Initialization - __init__ 함수를 호출해서 새로운 instance를 생성하여 메모리를 할당하고 초기화한다. - __new__ 함수가 overriding 된 경우,instance 생성시에 __new__ 함수도 호출한다. 3) Access and manipulation - 객체를 사용한다. 4) Destructio..
ch05. 파이썬 날개달기 (패키지, 예외처리) 3. 패키지 ■ 패키지 - 파이썬 패키지는 디렉토리와 파이썬 모듈로 이루어진 구조이다. - .(dot)을 이용해서 계층적으로 접근 관리가 가능하다. ■ __init__.py - 해당 디렉토리가 패키지의 일부임을 알려주는 역할을 한다. ※ python3.3 버전부터는 __init__.py 파일이 없어도 패키지로 인식한다(PEP 420). 하지만 하위 버전 호환을 위해 __init__.py 파일을 생성하는 것이 안전한 방법이다. - __all__ 변수 • 패키지 import 시에 *를 사용해 import 할 모듈들을 정의하는 변수 • __all__ 변수에 정의되어 있지 않은 모듈은 *를 통해서 해당 패키지를 import 해도 사용할 수 없다. ※ from a.b.c import * 에서 패키지의 마지막인 c..
ch05. 파이썬 날개달기 (모듈) 2. 모듈 ■ 모듈 - 모듈이란 변수 또는 클래스를 모아놓은 파일이다. - 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이다. ■ 모듈 만들기 - 모듈 생성 # mod1.py def add(a, b): return a + b def sub(a, b): return a-b - mod1이라는 모듈에 add와 sub라는 함수를 생성했다. ※ .py 확장자를 가지는 파이썬 파일들은 모두 파이썬 모듈이다. ■ 모듈 불러오기 - 모듈을 불러올 때는 해당 모듈이 위치하는 곳에서 import를 사용해서 불러올 수 있다. # mod1 모듈 사용예제 # import {모듈이름} import mod1 print(mod1.add(3, 4))# 7 print(mod1.sub(4, 2))# 2 - i..
[Slack Bot 만들기] 2. python으로 Slack bot 만들기 Slack app 생성 및 연동을 마무리 했다면, python과 Slack api를 사용해서 우리가 원하는 기능을 구현할 수 있습니다. python 소스를 구현하기에 앞서 app 생성할 때 같이 생성되었던 token을 미리 로컬에 저장합니다. token은 Slack api 메소드를 호출할 때 파라미터로 사용해야 필요하기 때문에 json파일로 따로 저장해놓고, python 소스에서 읽어와서 사용하는 방식으로 사용하겠습니다. 먼저 conversations.list 메소드를 이용해서 채널 목록을 조회하겠습니다. # slack bot token 불러오기 # json으로 저장한 token.json 파일을 읽어와서 token key 조회 parent_path = '/location/of/parent/director..

반응형