프로그래밍언어 (102) 썸네일형 리스트형 [Python] Python 병렬처리 - threading (3) [threading - Thread-based parallelism] ■ Lock Objects primitive lock 은 잠긴 상태일때 특정 thread 가 소유할 수 없는 동기화 primitive 이다. 현재 파이썬에서 _thread 확장 모듈에 의해 직접 구현되는 가장 low 한 동기화 primitive 이다. primitive lock은 locked 와 unlocke, 두가지 상태를 가지고 있는데, 초기 생성 시에는 unlocked 상태로 생성된다. 해당 class 는 acquire 와 release, 두개의 메소드를 가지고 있으며, 이를 통해서 Lock 의 상태를 다룰 수 있다. 각 메소드는 현재 lock 의 상태가 locked 인지 unlocked 인지에 따라서 다르게 작동한다. - acq.. [Python] Python 병렬처리 - threading (2) [threading - Thread-based parallelism] ■ Thread Objects Thread class는 개별 제어 thread에서 실행하는 활동을 나타낸다. thread가 실행할 활동은 run() 메소드를 override 하거나 callable object를 전달하여 설정할 수 있다. ( override 시에는 __init__과 run() 메소드만 override 해야한다.) 각 thread의 활동을 시작하도록 하기 위해서는 start() 메소드를 호출한다. start 메소드는 thread의 run() 메소드를 실행시킨다. thread가 활동을 시작하면 alive 상태가 되는데, run() 메소드가 종료되거나 예외 발생 시에 alive 상태가 해제된다. alive 상태는 is_ali.. [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.. [Python] 정규 표현식 (Regular Expressions) ■ 정규표현식: 복잡한 문자열을 특수한 기호들을 사용하여 처리하는 기법 ■ 정규표현식 메타문자 ※ 메타문자란 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 말한다. - 정규표현식에서 사용하는 메타문자들: . ^ $ * + ? { } [ ] \ | ( ) - [] • 문자클래스 • [ ] 사이의 문자들과 매치 • ex) [abc]: "a, b, c 중 한 개의 문자와 매치" • '-' 하이픈 사용: 두 문자 사이의 범위를 표현 • [a-d] == [abcd], [0-5] == [012345] • [a-zA-Z]: 알파벳 전체 • [0-9]: 숫자 • ^ 사용: not의 의미를 가지고 있다. • ex) [^0-9]: 숫자가 아닌 문자 - . (dot) • '\n'을 제외한 모든 문자 한 개와.. 이전 1 ··· 8 9 10 11 12 13 다음