기본 콘텐츠로 건너뛰기

World Nomade Flask 스터디1 ) python heap sort, quick sort , merge...

World Nomade Flask 스터디1 ) python heap sort, quick sort , merge...

## 문제

Q. 다음 요구사항을 만족하는 RESTful API 를 파이썬과 Flask를 이용해서 만드세요.

정수를 포함하는 배열을 입력으로 받아서, 최대값을 리턴합니다.

요청 메시지와 응답 메시지는 모두 JSON 포맷입니다.

[요청 메시지 샘플]

{

"numbers": [3,8,2,3,9,5,4]

}

[응답 메시지 샘플]

{

"result": 9

}

해당 문제에 대해서 Flask를 이용해서 해결하도록 하겠습니다.

먼저 필요한 라이브러리로는

Flask==0.12.2

flask-json

requests

nose

requests와 nose 라이브러리는 테스트를 위하여 설치합니다.

간단한 프로젝트이기 때문에 hello.py 하나의 파이썬 파일로 구성하고, 알고리즘 부분은 core.py ,

테스트 부분은 tests/test.py 로 구성하였습니다.

import time

from flask import Flask

from core import maxheap_element, check_value_type, merge_sort, maxheap_element2

from flask import request

from flask_json import FlaskJSON, JsonError, json_response

app = Flask(__name__)

json = FlaskJSON( app )

@app.route('/heapsort',methods=['GET','POST'])

def index():

start_time = time.time() # json으로 요청이 오기 때문에 request.get_json메서드를 이용하여 data를 받은 후 # data는 json type이기 때문에 원하는 input인 data['numbers']를 얻습니다. # try - except 구문으로 input이 json이 아닌경우 json의 key가 numbers가 아닌 경우 JSONERROR를 발생시켜 예외 처리를 # 해줍니다.

data = request.get_json(force=True)

try:

value = data['numbers']

except (KeyError, TypeError, ValueError):

raise JsonError(description='Invalid value.')

check_value_type(value) #value가 int element를 가진 list인지 체크

result = maxheap_element(value) # heap_sort를 이용해서 처리

execution_time=time.time() - start_time # 실행시간 체크

sort = 'heap sort'

return json_response(result=result,time=execution_time,sort=sort)

if __name__ == '__main__' :

app.run( debug = True )

저는 여러가지 알고리즘을 적용해서 길이가 1만인 리스트를 요청으로 보내서

걸리는 시간을 체크해봤습니다.

테스트는 JUPYTER NOTEBOOK에서 Requests 라이브러리를 이용해서 테스트 하였습니다.

속도는 heapsort > quick sort > merge sort 순이었습니다.

from http://blog.doosikbae.com/47 by ccl(A) rewrite - 2020-03-07 05:20:43

댓글

이 블로그의 인기 게시물

Flask 13. pythonanywhere에 배포하기

Flask 13. pythonanywhere에 배포하기 Login: PythonAnywhere It's always a pleasure to hear from you! Ask us a question, or tell us what you love or hate about PythonAnywhere. We'll get back to you over email ASAP. Sorry, there was an error connecting to the server. Please try again in a few moments... www.pythonanywhere.com from http://ohdowon064.tistory.com/124 by ccl(A) rewrite - 2020-03-11 15:54:10

Flask.py #1 설치해보자

Flask.py #1 설치해보자 Flask는 python의 프레임워크라고 할 수 있습니다. Flask를 설치해보자! # 리눅스 -- 접기 이러면 끝 - # pip install flask $ sudo -s 리눅스 같은 경우는 이미 파이썬이 설치가 되어 있을겁니다. # 리눅스 -- 접기 # 맥 -- 접기 이러면 끝 - $ sudo pip install flask 설치가 끝낫으면 Terminal.app 을 열어줍시다. 로 접속하여 파이썬을 설치해 줍니다. [ https://www.python.org/ ] # 맥 -- 접기 # 윈도우 -- 접기 [ https://www.python.org/ ] 로 접속하여 파이썬을 설치해 줍니다. 설치가 끝났으면 [ 고급설정 ] - [ 환경변수 ] - [ 시스템 변수 ] 에서 Path를 찾아줍니다. Path를 찾으셧다면 편집을 누르고 파이썬의 설치 경로와 파이썬 폴더 내의 Script 폴더를 입력해 줍시다. 환경변수까지 끝나셧다면 cmd 창을 키시고 pip install flask 이러면 flask 설치가 끝나게 됩니당 from http://chocoweb.tistory.com/14 by ccl(A) rewrite - 2020-03-07 13:54:54