python程序多次运行_python多进程重复加载的解决方式

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用多进程时,每个进程都会独立分配一部分内存。如果每个进程占的内存过多,可能会导致整个系统的内存溢出。在这种情况下,可以考虑以下几种解决方案: 1. 减少进程的内存占用:检查每个进程的内存占用情况,确认是否存在大量内存占用的操作或对象创建。可以优化代码,减少内存使用量。例如,使用生成器、迭代器等方式避免一次性加载大量数据到内存中。 2. 调整并发进程数:降低同时运行进程数量,减少内存占用。可以通过调整进程池大小、限制并发任务数量或者使用队列来控制并发进程数。 3. 使用进程池管理内存:使用`multiprocessing.Pool`来管理进程池,控制并发进程数。这样可以避免一次性启动过多进程导致内存溢出。 4. 增加内存资源:如果系统内存不足以支持多进程运行,可以考虑增加内存资源。这可以通过升级硬件、增加虚拟机实例等方式来实现。 5. 使用分布式处理:如果单机资源无法满足需求,可以考虑使用分布式处理方式,将任务分发到多台机器上进行处理,以减轻单机的压力。 6. 使用内存管理工具:可以使用Python中的内存管理工具,如`memory_profiler`和`objgraph`等,来定位内存占用较高的地方,并进行优化。 7. 调整系统参数:在某些情况下,可以通过调整操作系统的参数来增加进程的可用内存。例如,对于Linux系统,可以增加`vm.overcommit_memory`参数的值。 请根据具体情况选择适合的解决方案,如果问题仍然存在,可能需要进一步分析代码和系统环境以找到更准确的解决方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值