欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用flask將模型部署為服務(wù)

 更新時(shí)間:2021年05月13日 15:57:05   投稿:yxs  
在某些場(chǎng)景下,我們需要將機(jī)器學(xué)習(xí)或者深度學(xué)習(xí)模型部署為服務(wù)給其它地方調(diào)用,本文接下來(lái)就講解使用python的flask部署服務(wù)的基本過(guò)程。

1. 加載保存好的模型

為了方便起見(jiàn),這里我們就使用簡(jiǎn)單的分詞模型,相關(guān)代碼如下:model.py

import jieba


class JiebaModel:
    def load_model(self):
        self.jieba_model = jieba.lcut

    def generate_result(self, text):
        return self.jieba_model(text, cut_all=False)

說(shuō)明:在load_model方法中加載保存好的模型,無(wú)論是sklearn、tensorflow還是pytorch的都可以在里面完成。在generate_result方法中定義處理輸入后得到輸出的邏輯,并返回結(jié)果。

2. 使用flask起服務(wù)

代碼如下:test_flask.py

# -*-coding:utf-8-*-
from flask import Flask, request, Response, abort
from flask_cors import CORS
# from ast import literal_eval
import time
import sys
import json
import traceback

from model import JiebaModel

app = Flask(__name__)
CORS(app) # 允許所有路由上所有域使用CORS

@app.route("/", methods=['POST', 'GET'])
def inedx():
    return '分詞程序正在運(yùn)行中'

@app.route("/split_words", methods=['POST', 'GET'])
def get_result():
    if request.method == 'POST':
        text = request.data.decode("utf-8")
    else:
        text = request.args['text']

    try:
        start = time.time()
        print("用戶輸入",text)
        res = jiebaModel.generate_result(text)
        end = time.time()
        print('分詞耗時(shí):', end-start)
        print('分詞結(jié)果:', res)
        result = {'code':'200','msg':'響應(yīng)成功','data':res}
    except Exception as e:
        print(e)
        result_error = {'errcode': -1}
        result = json.dumps(result_error, indent=4, ensure_ascii=False)
        # 這里用于捕獲更詳細(xì)的異常信息
        exc_type, exc_value, exc_traceback = sys.exc_info()
        lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
        # 提前退出請(qǐng)求
        abort(Response("Failed!\n" + '\n\r\n'.join('' + line for line in lines)))
    return Response(str(result), mimetype='application/json')


if __name__ == "__main__":
    jiebaModel = JiebaModel()
    jiebaModel.load_model()
    app.run(host='0.0.0.0', port=1314, threaded=False)

說(shuō)明:我們定義了一個(gè)get_result()函數(shù),對(duì)應(yīng)的請(qǐng)求是ip:port/split_words。 首先我們根據(jù)請(qǐng)求是get請(qǐng)求還是post請(qǐng)求獲取數(shù)據(jù),然后使用模型根據(jù)輸入數(shù)據(jù)得到輸出結(jié)果,并返回響應(yīng)給請(qǐng)求。如果遇到異常,則進(jìn)行相應(yīng)的處理后并返回。在__main__中,我們引入了model.py的JiebaModel類(lèi),然后加載了模型,并在get_result()中調(diào)用。

3. 發(fā)送請(qǐng)求并得到結(jié)果

代碼如下:test_request.py

import requests

def get_split_word_result(text):
    res = requests.post('http://{}:{}/split_words'.format('本機(jī)ip', 1314), data=str(text).encode('utf-8'))
    print(res.text)

get_split_word_result("我愛(ài)北京天安門(mén)")

說(shuō)明:通過(guò)requests發(fā)送post請(qǐng)求,請(qǐng)求數(shù)據(jù)編碼成utf-8的格式,最后得到響應(yīng),并利用.text得到結(jié)果。

4. 效果呈現(xiàn)

(1)運(yùn)行test_flask.py

(2)運(yùn)行test_request.py

并在起服務(wù)的位置看到:

以上就是如何使用flask將模型部署為服務(wù)的詳細(xì)內(nèi)容,更多關(guān)于用flask將模型部署為服務(wù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python檢測(cè)數(shù)據(jù)類(lèi)型的方法總結(jié)

    Python檢測(cè)數(shù)據(jù)類(lèi)型的方法總結(jié)

    在本篇文章里小編給大家整理了關(guān)于Python檢測(cè)數(shù)據(jù)類(lèi)型的方法和相關(guān)實(shí)例代碼,需要的朋友們跟著學(xué)習(xí)下。
    2019-05-05
  • Python提取Linux內(nèi)核源代碼的目錄結(jié)構(gòu)實(shí)現(xiàn)方法

    Python提取Linux內(nèi)核源代碼的目錄結(jié)構(gòu)實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇Python提取Linux內(nèi)核源代碼的目錄結(jié)構(gòu)實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • python連接、操作mongodb數(shù)據(jù)庫(kù)的方法實(shí)例詳解

    python連接、操作mongodb數(shù)據(jù)庫(kù)的方法實(shí)例詳解

    這篇文章主要介紹了python連接、操作mongodb數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了Python針對(duì)MongoDB數(shù)據(jù)庫(kù)的連接、查詢、排序等相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • python中and和or邏輯運(yùn)算符的用法示例

    python中and和or邏輯運(yùn)算符的用法示例

    python中的邏輯運(yùn)算符有兩種返回值,python運(yùn)算符除了能操作bool類(lèi)型表達(dá)式,還能操作其他所有類(lèi)型的表達(dá)式,這篇文章主要給大家介紹了關(guān)于python中and和or邏輯運(yùn)算符用法的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 如何解決Selenium包安裝成功卻無(wú)法導(dǎo)入的問(wèn)題

    如何解決Selenium包安裝成功卻無(wú)法導(dǎo)入的問(wèn)題

    這篇文章主要介紹了如何解決Selenium包安裝成功卻無(wú)法導(dǎo)入的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python異步之迭代器如何使用詳解

    Python異步之迭代器如何使用詳解

    這篇文章主要為大家介紹了Python異步之迭代器如何使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 用python寫(xiě)一個(gè)windows下的定時(shí)關(guān)機(jī)腳本(推薦)

    用python寫(xiě)一個(gè)windows下的定時(shí)關(guān)機(jī)腳本(推薦)

    由于本人經(jīng)常使用筆記本共享WiFi,但是又不想筆記本開(kāi)機(jī)一夜,每次都是使用dos命令關(guān)機(jī),感覺(jué)好麻煩,然后小編想到用python寫(xiě)一個(gè)定時(shí)關(guān)機(jī)的腳本,具體實(shí)例代碼請(qǐng)參考本文
    2017-03-03
  • 詳解Python中is和==的區(qū)別

    詳解Python中is和==的區(qū)別

    這篇文章主要介紹了Python中is和==的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python urllib模塊urlopen()與urlretrieve()詳解

    Python urllib模塊urlopen()與urlretrieve()詳解

    Python urllib模塊urlopen()與urlretrieve()的使用方法詳解。
    2013-11-11
  • 使用Python進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化的多種方法與技巧

    使用Python進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化的多種方法與技巧

    可視化是理解和解釋大量數(shù)據(jù)的強(qiáng)大工具之一,而Python作為一種流行的編程語(yǔ)言,提供了豐富的庫(kù)和工具來(lái)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化,本文將介紹一些使用Python進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化的方法與技巧,并提供相應(yīng)的代碼實(shí)例,需要的朋友可以參考下
    2024-05-05

最新評(píng)論