麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

python多進程重復加載的解決方式

2024-09-09 19:03:15
字體:
來源:轉載
供稿:網友

flask多進程會引起重復加載,

解決方法:把耗資源的加載挪到函數里面或者類里面,就不會重復加載資源了。

測試發現,不是flask引起的,是多進程會引起重復加載python文件。

把flask注釋掉,也會重復加載。

# autotrade/__init__.py# __init__.py 定義全局的app路由# 然后將其他模塊由app裝飾后的函數導入,flask即可識別所有的請求入口import time from flask import Flaskfrom multiprocessing import Process # 配置全局app # 導入index中定義的所有函數# from autotrade.server.index import *print("import will repeat")def run_index():  print("run_index once")  app = Flask(__name__)  # 啟動web服務器,使用多線程方式,接收所有http請求  app.run(host='0.0.0.0', port=5000, threaded=True,debug=False) def run_orders():  # 啟動查詢交易程序  while True:    print('執行相應的交易程序')    time.sleep(3) def main():  # 主程序  # 創建子進程  jobs = []  jobs.append(Process(target=run_index))  # jobs.append(Process(target=run_orders))  # 啟動子進程  for job in jobs:    job.start()   # 等待子進程結束返回  for job in jobs:    job.join() if __name__ == '__main__':  # run_index()  main()

一般情況,把需要加載的封裝到函數或者類中就可以了,

但是有一個例外:就是SQLAlchemy

必須在py文件中實例化,

from flask_login import LoginManagerfrom flask_mail import Mailfrom flask_socketio import SocketIOfrom flask_migrate import Migratefrom flask_rq2 import RQfrom flask_wtf.csrf import CSRFProtectfrom monitor.common.storage import LocalStorage, QiniuStorage, ObjectStorageimport config.global_var as gl_var# from monitor.common.es_search import ESearchEngineQINIU_AVAILABLE = gl_var.get_value("qiniu_available")OSS_AVAILABLE = gl_var.get_value("oss_available")REDIS_URI = gl_var.get_value("redis_uri")BASEDIR = gl_var.get_value("basedir")sbdwl = gl_var.get_value("sbdwl")class Redis(object):  def __init__(self):    self._db = None  def init_app(self, uri=REDIS_URI):    self._db = _redis.Redis.from_url(uri)  @property  def db(self):    return self._dbprint("import foundation")import threadingclass Singleton(object):  _instance_lock=threading.Lock()  def __init__(self):    pass    # import time    # print("sleep")    # time.sleep(1)  def __new__(cls, *args, **kwargs):    if not hasattr(Singleton,"_instance"):      with Singleton._instance_lock:        if not hasattr(Singleton,"_instance"):          print("create _instance----------------------------")          Singleton._instance=object.__new__(cls,*args,**kwargs)          app = Flask(__name__)          Singleton._instance.db = SQLAlchemy(app)          Singleton._instance.login_manager = LoginManager()

解決方法:把啟動換到一個新文件,然后在函數中調用這個文件,import也放在函數內部。

以上這篇python多進程重復加載的解決方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網之家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久三区 | 国产精品成人av片免费看最爱 | 欧美精品激情在线 | 911网站大全在线观看 | 日韩剧情片 | 国产99久久久国产精品下药 | 成人午夜精品久久久久久久蜜臀 | 色综合网在线观看 | 亚洲亚色 | 91精品国产91久久久久久蜜臀 | 欧美日韩成人一区二区 | 牛牛热这里只有精品 | 91久久一区 | www.48xx.com | 黑人一级片 | 欧美日韩亚洲国产 | 狠狠操夜夜爱 | 羞羞视频免费网站男男 | 黄色7777| 国产精品久久久久久久午夜片 | 成年人高清视频在线观看 | 成人午夜激情视频 | 午夜视频久久 | 成人精品久久 | 精品一区二区视频在线观看 | 国产69精品久久久久久 | 中国毛片在线观看 | 最新午夜综合福利视频 | 91精品国产九九九久久久亚洲 | 俄罗斯16一20sex牲色另类 | 午夜视频在线观看免费视频 | 国产免费一区二区三区视频 | 国产精品自拍99 | 99视频有精品 | 亚洲91网站 | 国产91免费看 | 羞羞视频免费观看入口 | 亚洲视频精选 | 精品亚洲成a人在线观看 | 中文字幕亚洲欧美 | 91在线播放国产 |