동시성을 보장하는 프로그래밍은 개발자에게 있어서 필수적이다. 이를 사용하지 않는다면 하드웨어 자체의 기술 발전이 있지 않는 한 프로그램의 속도 향상을 기대하기 힘들다. 뛰어난 동시성 코드를 지원하는 프로그래밍 언어로 go, elixir, scala 등이 있다. 수많은 유용한 라이브러리를 지원하는 파이썬 역시 asyncio나 coroutine과 같은 동시성 프로그래밍을 지원하고 있다. 본 지에서는 동시성과 병렬성의 개념을 정의하며, 파이썬에서 동시성 프로그래밍을 작성할 시에 유의해야 할 점에 대해 설명한다. 웹 데이터를 수집하는 크롤러를 동시성 코드로 작성하여 순차, 멀티스레딩 코드로 작성된 프로그램과 성능을 비교한다.
동시성을 보장하는 프로그래밍은 개발자에게 있어서 필수적이다. 이를 사용하지 않는다면 하드웨어 자체의 기술 발전이 있지 않는 한 프로그램의 속도 향상을 기대하기 힘들다. 뛰어난 동시성 코드를 지원하는 프로그래밍 언어로 go, elixir, scala 등이 있다. 수많은 유용한 라이브러리를 지원하는 파이썬 역시 asyncio나 coroutine과 같은 동시성 프로그래밍을 지원하고 있다. 본 지에서는 동시성과 병렬성의 개념을 정의하며, 파이썬에서 동시성 프로그래밍을 작성할 시에 유의해야 할 점에 대해 설명한다. 웹 데이터를 수집하는 크롤러를 동시성 코드로 작성하여 순차, 멀티스레딩 코드로 작성된 프로그램과 성능을 비교한다.
Programming that ensures concurrency is essential for developers. If you do not use it, it is hard to expect the speed of the program to improve unless there is technical advancement of the hardware itself. Programming languages that support good concurrency code include go, elixir, and scala. Pytho...
Programming that ensures concurrency is essential for developers. If you do not use it, it is hard to expect the speed of the program to improve unless there is technical advancement of the hardware itself. Programming languages that support good concurrency code include go, elixir, and scala. Python, which supports a number of useful libraries, also supports concurrent programming like asyncio and coroutine. This paper defines the concepts of concurrency and parallelism, and explains what to note when writing concurrency programming in Python. The crawler that collects web data is written in concurrent code and compared with programs written in sequential, multithreaded code.
Programming that ensures concurrency is essential for developers. If you do not use it, it is hard to expect the speed of the program to improve unless there is technical advancement of the hardware itself. Programming languages that support good concurrency code include go, elixir, and scala. Python, which supports a number of useful libraries, also supports concurrent programming like asyncio and coroutine. This paper defines the concepts of concurrency and parallelism, and explains what to note when writing concurrency programming in Python. The crawler that collects web data is written in concurrent code and compared with programs written in sequential, multithreaded code.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
3장에서는 파이썬에서 지원하는 동시성 기법을 활용하여 웹 데이터를 수집하는 크롤러의 기능을 개선하고 순차, 멀티스레딩 방식을 사용한 프로그램과의 성능을 비교하였다. 덧붙여 성능 측정 시 사용했던 clock 데코레이터 방법에 대해 소개하였다. 기존에 해왔던 방식으로 순차 또는 멀티스레 딩을 사용한다면 동시성에서 얻을 수 있는 효율을 얻지 못한다.
함수형 프로그래밍을 기반한 동시성 프로그래밍은 비동기를 지원하여 동시성을 보장하며, 불변하는 자료형을 제공하고 루틴에 진입하면 중간에 침범을 불허하여 사이드 이펙트를 제거한다. 본 지에서는 동시성 프로그래밍을 지원하는 언어 중 하나인 파이썬을 사용하여 동시성을 보장하는 크롤러 개발에 대해 기술한다. 2장에서는 동시성과 병렬성의 개념 정리 및 파이썬 언어의 동시성에 대하여 설명하며, 3장에서는 웹 데이터를 수집하는 크롤러를 순차, 멀티스레딩, 동시성 기법으로 작성하고 성능을 비교한다.
기존에 해왔던 방식으로 순차 또는 멀티스레 딩을 사용한다면 동시성에서 얻을 수 있는 효율을 얻지 못한다. 본 지에서는 파이썬의 비동기 기법을 소개함과 더불어 비동기 기법을 사용하여 수행하는 프로젝트에서 사용하던 크롤러의 성능을 개선하였다.
2장에선 동시성과 병렬성의 차이점에 대해 설명한다. 파이썬 언어에서 동시성을 보장하기 위하여 고려해야하는 사항에 대해 기술한다.
가설 설정
동시성과 병렬성은 중첩된 의미를 내포한다. 100개의 일을 처리한다고 가정할 때, 하나의 코어에 한정할 경우 동시적으로 처리할 것이다. 100개의 일들이 있는데 하나의 프로세스에서 순차적으로 1개의 일만 처리하는 코어는 없을 것이다.
제안 방법
3장에서는 크롤러를 Asyncio로 작성하는 과정을 소개한다. Asyncio로 작성된 프로그램과 순차, 멀티스레딩 방법으로 작성된 프로그램의 성능을 비교한다.
대상 데이터
<그림 6>과 같이 3개의 루트를 지정하고 20개의 웹페이지에서 데이터를 수집한다. 크롤러는 루트 목적지는 지정할 수 있지만 그 이후에는 어떤 사이트로 이동할지 예상할 수 없다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.