본문 바로가기

IT/Internals6

Global Interpreter Lock (GIL) 해당 글은 아래 글을 번역 및 의역한 것이다. (보다 자세한 부분은 첨부된 페이지를 참조)https://realpython.com/python-gil/#why-wasnt-it-removed-in-python-3 Python의 Global Interpreter Lock (GIL)은 mutex (또는 lock)으로 "오직" 하나의 Thread가 Python Interpreter의 제어권을 가지고 있는 것이다. 즉, 한 시점에 하나의 Thread만 실행 상태에 있을 수 있다는 의미이다. GIL은 Single-threaded 프로그램에서 확인할 수는 없다. 대신에 CPU-Bound, Multi-Threaded 코드에서는 Bottlenect이 발생하여 성능에 악영향을 주는 것을 확인할 수 있다. 그 이유는 GIL.. 2019. 8. 11.
[번역] Speed Up Your Python Program With Concurrency Part 2 지난 번에 이어서 좀 더 자세히 알아보려고 한다.*의역이 있을 수 있고 이해한 바를 바탕으로 정리했기 때문에 원문과 의미가 조금 달라 질 수 있다. (원문은 아래에 첨부하였다.)https://realpython.com/python-concurrency/#how-to-speed-up-an-io-bound-program I/O Bound 프로그램의 속도를 높이는 방법I/O Bound 관련 프로그램으로 네트워크 상에서 컨텐츠를 내려 받는 문제에 대해 알아보자. 동기(Synchronous) 버전먼저 해당 작업을 비동시성 작업으로 시작해보자. 프로그램은 requests 모듈이 필요하다. 때문에 프로그램을 실행하기전에 pip install requests를 실행해야 한다. import requests import .. 2019. 8. 11.
[번역] Speed Up Your Python Program With Concurrency Part 1 파이썬 동시성에 관한 좋은 글이 있어서 관련 내용을 번역해보려 한다. *의역이 있을 수 있고 이해한 바를 바탕으로 정리했기 때문에 원문과 의미가 조금 달라 질 수 있다. (원문은 아래에 첨부하였다.)https://realpython.com/python-concurrency/#how-to-speed-up-an-io-bound-program추가로 해당 포스팅은 부분 부분 나누어서 진행하려고 한다. 동시성(Concurreny) 이란?동시성의 사전적 정의는 어떠한 사건이 동시에 발생(simultaneous occurrence)하는 것이다. Python에서는 동시에 발생하는 사건들이 내부적으로 Thread, Task, Process 등에 의해 호출된다. (하지만 High level 관점에서는 모두 순서대로 수행되.. 2019. 8. 3.
I/O, CPU Bound 이번 포스팅은 CPU 및 IO Bound에 대해 알아보려고 한다. (이와 관련되서는 아래의 글을 참조)https://hellsoft.se/https-hellsoft-se-understanding-cpu-and-io-bound-for-asynchronous-operations-6511c70a5685 IOwaitCPU 입장에서는 로컬 파일 시스템 또는 네트워크 상의 소켓에서 데이터를 Read/Write 할 때 많은 시간을 대기하게 된다. 이러한 이유를 이해가기 위해서는 하드웨어 레벨로 내려가야하는데, 단순히 하드웨어는 관련 데이터를 전달 받을 때까지 사용할 수 없기 때문이다. (하드웨어는 관련 데이터를 모두 전달 받을 때까지 CPU는 대기하게 된다.)즉, RAM을 사용하지 않는 Read/Write와 같은 I.. 2019. 6. 23.