python项目开发——总结笔记(csv excel读取 服务端端口进程 拟合预测 时间格式转化 服务端程序维护)

news2024/11/16 23:42:26

目录

部署服务端程序

主服务端控制程序main.py

子目录的计算程序 jisuan.py

读取数据

读取csv数据读取

读取excel

时间格式转换

时间戳转datetime并且生成时间序列最后格式化时间

 常用函数

拟合预测

服务端程序控制与维护


部署服务端程序

主服务端控制程序main.py

from flask import Flask, request, jsonify, make_response
from flask_cors import *
from pydantic import BaseModel
# utils为本目录的一个文件夹名,utils文件夹中有jisuan.py文件,搞个简称js
import utils.jisuan as js
import sys

# 支持并发访问,保证计算过程不报错的一些定义,不必纠结
sys.setrecursionlimit(100000) #设置递归深度
app = Flask(__name__)
class Data(BaseModel):
    path: str
    data: list
app = Flask(__name__)
CORS(app)

# 发生错误,返回给前端的格式,需要与前端设计一起考虑
def wrong(cause):
    msg = {}
    msg['msg'] = cause
    msg['code'] = 500
    data = {}
    data['data'] = "0"
    data['msg'] = msg
    return data

# 前端发送请求的接口名,需要与函数名一致
@app.post("/jisuan1")
async def jisuan1():
    # 接受文件
    try:
        file_obj = request.files['file']
    except:
        return wrong("文件上传失败")
    # 接受对象数据
    try:
        receive = request.json
    except:
        return wrong("数据接受失败")
    #给子js文件的daoru函数发送接收到的文件,接受返回内容
    try:
        result = js.daoru(file_obj)
    except Exception as e:
        print(e)
        return wrong("文件处理出错")
    #发送对象数据
    try:
        result = js.yunsuan(receive)
    except Exception as e:
        print(e)
        return wrong(e)
    #成功的返回格式
    msg = {}
    msg['msg'] = "成功"
    msg['code'] = 200
    data = {}
    data['data'] = result
    data['msg'] = msg
    return data

# 在8765端口等候,0.0.0.0 处理所有地址来的请求
if __name__ == '__main__':
    app.run(host='0.0.0.0',port=8765)

子目录的计算程序 jisuan.py


def daoru(file_obj):

    return 1

def yunsuan(data):

    return 1

读取数据

读取csv数据读取

import csv

def get_data():
    file_path = 'C:\\Users\\1.csv' 
    
    result ={}
    result['时间'] = [] #对象中创建名为name,值为空列表的键值对
    result['值'] = []

    with open(file_path, 'r') as file:  
        reader = csv.reader(file)  

        for values in reader:  
            values[0].split(" ") //读取csv的第一行
            # 假设第一列为时间,进行格式转换
            time_obj = datetime.strptime(values[0][0], " %Y/%m/%d-%H:%M")
            result['时间'].append(time_obj)
            result['值'].append(float(values[0][1]))
    return result

读取excel

import pandas as pd

def daoru(file_obj):
    
    #忽略异常,不必纠结
    warnings.simplefilter(action='ignore', category=FutureWarning)

    data = pd.read_excel(file_obj)
    # 用0填充空值
    data.fillna(0, inplace=True)

    #选择第六列的所有元素,转化成数列
    数值1 = list(data.iloc[:, 5])

    result = {}
    result['数值1'] = 数值1[:]
    #转化成对象返回
    return result

时间格式转换

时间戳转datetime并且生成时间序列最后格式化时间

import time
from datetime import datetime
import datetime as dt
时间戳 = 1710080000
time_list = []
# 把时间戳转成datetime格式
date = time.localtime(int(时间戳))
date_time = datetime(*date[:6])
time_list.append(date_time)
后一个时间比前一个时间晚一个小时
for i in range(10):
    time_list.append(time_list[i] + dt.timedelta(minutes=60))
for i in range(11):
#格式化时间
    time_list[i] = time_list[i].strftime('%Y-%m-%d %H')
print(time_list)

 常用函数

四舍五入 round(2.7026,1)

平方 pow(10,2)  更可靠方式 numpy.power(10, 0.32)

添加数列元素 list_a.append(1)

生成pai   math.pi

拟合预测

import numpy as np

拟合列表 = [1,2,2.5,3,2.8,2.6,2.4,2.3]

# 生成自然数列表
x_拟合 = list(range(0,8))
x_预测 = list(range(0,20))

# 拟合度预告,拟合效果越好,预测效果越差
拟合度 = 2

# x与y要长度一致
p1 = np.poly1d(np.polyfit(x_拟合,拟合列表, 拟合度))

预测列表 = list(p1(x_预测))

服务端程序控制与维护

进入到main文件目录

netstat -lnp|grep 8765 查看占用8765端口的进程

sudo kill -9 13990  杀死这个进程

python3 main.py 重启服务端main程序

 由于flask框架长时间运行会自己中断,我写了一个程序,让他每隔一段时间重新启动,实现永远不会掉线,在此分享

nohup python3 -u keep.py > nohup.log 2>&1 &
目录中创建一个keep.py文件,再创建一个写入日志的nohup.log文件


# 只是重复了上面的手动关闭,开启过程,不必修改

import time
import subprocess
import re
import os
import psutil
def job():
    # 进程名称python3 
    # 当前进程pid
    # print("dance:", os.getpid())
    with open('keep.txt', 'w') as f:
        f.write(str(os.getpid()))
    # 当前进程名称
    # print(psutil.Process().name())

    os.system("nohup python3 -u main.py > /root/1.log 2>&1 &")
    print("开启")
    time.sleep(60*60*3)
    command = "netstat -lnp|grep 8765"
    output = subprocess.check_output(command, shell=True, universal_newlines=True)
    print(output)
    match = re.search(r'LISTEN\s+(\d+)/python', output)

    if match:
        number = int(match.group(1))
        # print("获取pid: " + str(number))

    os.system("sudo kill -9 %d" % number)
    print("杀死了")
    # time.sleep(7)



while True:
    job()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1517229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ideaSSM社区二手交易平台C2C模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 社区二手交易平台系统是一套完善的完整信息管理系统,结合SSM框架完成本系统SpringMVC spring mybatis ,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码…

<支持向量机算法(SVM:Support Vector Machine)>——《机器学习算法初识》

目录 一、⽀持向量机(SVM)算法 1 SVM算法导⼊ 2 SVM算法定义 2.1 定义 2.2 超平⾯最⼤间隔介绍 2.3 硬间隔和软间隔 2.3.1 硬间隔分类 2.3.2 软间隔分类 3 ⼩结 二、 SVM算法api初步使⽤ 三、 SVM算法原理 1 定义输⼊数据 2 线性可分⽀持向量机 3 SVM的计算过程与算…

开源免费CasaOS:轻松打造高效便捷的家庭云生活新体验

一、引言 随着科技的不断发展,家庭云系统逐渐成为现代家庭生活中的重要组成部分。CasaOS作为一款简单易用的开源家庭云系统,受到了广大用户的青睐。其简洁明了的界面设计,使得即使没有任何技术背景的用户也能轻松上手。本文将详细介绍CasaOS…

Helm Chart部署最简SpringBoot到K8S(AWS EKS版)

目标 这里假设,我们已经基本会使用k8s的kubectl命令进行部署了,也已经会自己打docker镜像推送到AWS ECR上面去了。而且,已经在云上准备好了AWS ECR镜像库和AWS EKS的k8s集群了。 这个前提上面,我们今天使用Helm Chart项目准备k8s…

【镜像转存】利用交互式学习平台killercoda转存K8S镜像至Docker私人仓库

文章目录 1. 镜像转存需求2. 注册并登陆 killercoda URL3. 打开playground4. 在线拉取K8S镜像并打上标签5. 推送K8S镜像到Docker私有仓库6. 登陆Docker私有仓库查看 1. 镜像转存需求 因K8S镜像在不开代理的情况下,拉取超时、下载缓慢,导致镜像拉取不下来…

解决无法登录到 ArcGIS Server Administrator

目录 问题复现原因分析解决办法 问题复现 今天在访问arcgisserver后台准备设置arcgis api for js请求路径时,登录之后出现500错误。Services Directoryhttp://xxx.xxx.xxx.xxx:6080/arcgis/admin/system/handlers/rest/servicesdirectory 原因分析 我实在两台虚拟机…

HM v.16.22 顺序读源码day3---TEncTop.cpp

文章目录 TEncTop.cpp引言Void TEncTop::encode执行流程实现细节Class TEncTopVoid TEncTop::xGetNewPicBuffer ( TComPic*& rpcPic, Int ppsId ) TEncTop.cpp 引言 TEncTop类是第二层编码类,也是执行实际编码计算工作的最顶层编码类。 Void TEncTop::encode是…

Logstash 详细介绍、安装与使用

目录 1. Logstash 概述2. 工作原理3. 安装和配置1. 安装(两种方法)2. 测试运行3. 配置输入和输出 4. 使用 Grok 过滤器插件解析 Web 日志5. 使用 Geoip 过滤器插件增强数据6. 配置接收 Beats 的输入 1. Logstash 概述 Logstash 是一个具有实时管道功能的…

Rust 深度学习库 Burn

一、概述 Burn 它是一个新的综合动态深度学习框架,使用 Rust 构建的,以极高的灵活性、计算效率和可移植性作为其主要目标。 Rust Burn 是一个以灵活性、高性能和易用性为核心设计原则工具,主打就是灵活性 、高性能 及易用性。 二、Rust B…

C#,图论与图算法,图着色问题(Graph Coloring)的威尔士-鲍威尔(Welch Powell Algorithm)算法与源代码

Welsh, D.J.A. and Powell, M.B. (1967) An Upper Bound for the Chromatic Number of a Graph and Its Application to Timetabling Problems. 《The Computer Journal》, 10, 85-86. 《The Computer Journal》 1 图着色算法概述 1967年,Welsh和Powell算法引入了…

bootstrap企业网站前端模板

介绍 企业网站前端模板 软件架构 前端所用技术html/css/js/jquery 前端框架bootstrap 安装教程 浏览器本地路径访问发布到服务器比如(tomcat/nginx等)云服务器/虚拟机 网站效果图 网站预览 点击预览 源码地址 https://gitee.com/taisan/company…

最新的yolov9,目标检测使用教程

1.克隆仓库,仓库地址: https://github.com/WongKinYiu/yolov9/tree/main 百度盘地址:https://pan.baidu.com/s/15v7XJIMDFG3XHJXfFs6ZDA 密码:1234 除了这两个模型,另外三个模型有问题...,下载ce模型即可 …

Jmeter+ant,ant安装与配置

1.ant含义 ant:Ant翻译过来是蚂蚁的意思,在我们做接口测试的时候,是可以用来做JMeter接口测试生成测试报告的工具 2.ant下载 下载地址:Apache Ant - Ant Manual Distributions download中选择ant 下载安装最新版zip文件 3.…

微服务分布式基于Springcloud的拍卖管理系统597wx

越来越多的用户利用互联网获得信息,但各种信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得信息,因此,设计一种安全高效的拍卖管理系统极为重要。 为设计一个安全便捷,并且使用户更好获取拍卖管理系统&#xff…

Annaconda环境下ChromeDriver配置及爬虫编写

Anaconda环境的chromedriver安装配置_anaconda 配置chromedriver-CSDN博客 Chromedriver驱动( 121.0.6167.85 ) - 知乎 下载好的驱动文件解压,将exe程序复制到Annaconda/Scripts目录以及Chrome/Application目录下 注意要提前pip install selenium包才能运行成功&a…

SpringBoot(自定义转换器+处理Json+内容协商)

文章目录 1.自定义转换器1.代码实例1.save.html2.编写两个bean1.Car.java2.Monster.java 3.WebConfig.java 配置类来自定义转换器4.测试 2.注意事项和细节1.debug查看转换器总数1.打断点2.执行到断点后,选左边的1923.可以看出,加上自定义的转换器一共125…

决策树 | 分裂算法:ID3,C4.5,CART

这里写目录标题 一. ID3算法1. 信息增益2. ID3算法特点 二. C4.5算法1. 信息增益率2. C4.5算法特点 三. CART算法1. Gini系数公式2. CART算法特点3. CART回归树的分裂评价指标 小节 在决策树算法逻辑篇中,我们讲解了决策树的构建方式,下面我们来聊一聊决…

边缘计算全面概述

什么是边缘计算? 边缘计算是一种分布式计算概念,将智能集成到边缘设备(边缘节点)中,使数据能够在数据采集源附近实时处理和分析。由于边缘计算在网络边缘本地处理数据,而不是在云端或集中式数据中心&#…

脑电信号处理的学习记录

【脑电信号处理与特征提取】https://www.bilibili.com/video/BV1Sg411775g?p6&vd_source77fb52274de00164fa71d28e4ce52cc5 滤波:对特定频率进行有效提取,并对提取部分进行特定的处理(增益、衰减、滤除)。 低通滤波&#x…

电商场景下 ES 搜索引擎的稳定性治理实践

继上文在完成了第一阶段 ES 搜索引擎的搭建后,已经能够实现对千万级别的商品索引的读写请求的支持。目前,单机房读流量在 500~1000 QPS 之间,写流量在 500 QPS 左右。 但随着业务的发展,问题也逐渐开始暴露&#xff0…