python多进程重复加载的解决方式


Posted in Python onDecember 13, 2019

flask多进程会引起重复加载,

解决方法:把耗资源的加载挪到函数里面或者类里面,就不会重复加载资源了。

测试发现,不是flask引起的,是多进程会引起重复加载python文件。

把flask注释掉,也会重复加载。

# autotrade/__init__.py
# __init__.py 定义全局的app路由
# 然后将其他模块由app装饰后的函数导入,flask即可识别所有的请求入口
import time
 
from flask import Flask
from 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 LoginManager
from flask_mail import Mail
from flask_socketio import SocketIO
from flask_migrate import Migrate
from flask_rq2 import RQ
from flask_wtf.csrf import CSRFProtect

from monitor.common.storage import LocalStorage, QiniuStorage, ObjectStorage
import config.global_var as gl_var
# from monitor.common.es_search import ESearchEngine

QINIU_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._db

print("import foundation")

import threading
class 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多进程重复加载的解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python判断、获取一张图片主色调的2个实例
Apr 10 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
Python返回数组/List长度的实例
Jun 23 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
Pycharm保存不能自动同步到远程服务器的解决方法
Jun 27 Python
基于pytorch padding=SAME的解决方式
Feb 18 Python
python飞机大战游戏实例讲解
Dec 04 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 #Python
Python代码块及缓存机制原理详解
Dec 13 #Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 #Python
python实现简单日志记录库glog的使用
Dec 13 #Python
利用matplotlib实现根据实时数据动态更新图形
Dec 13 #Python
Python3将jpg转为pdf文件的方法示例
Dec 13 #Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 #Python
You might like
正则表达式语法
2006/10/09 Javascript
php页面防重复提交方法总结
2013/11/25 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
python内存管理机制原理详解
2019/08/12 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
Python3获取cookie常用三种方案
2020/10/05 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
实习教师自我鉴定
2013/12/12 职场文书
护理个人求职信范文
2014/01/08 职场文书
股票投资建议书
2014/05/19 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
行政主管岗位职责
2015/02/03 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript