기본 콘텐츠로 건너뛰기

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

[ubuntu] FLASK_APP

[ubuntu] FLASK_APP Development/Debugging 🐞 FLASK_ENV=development FLASK_APP = app.py flask run zsh: command not found: FLASK_APP ✔️ FLASK_ENV=development FLASK_APP=app.py flask run 띄어쓰기를 해서 저런 오류를 출력할수도 있구나 😲 참고 : 108p에서 FLASK가 FKAS로 오타나있다. from http://hee-stories.tistory.com/18 by ccl(A) rewrite - 2020-03-24 17:20:11