当前位置: 首页 > news >正文

python多线程处理xlsx,多进程访问接口

import pandas as pd
from concurrent.futures import ThreadPoolExecutor# 读取Excel文件
file_path = 'scence.xlsx'
df = pd.read_excel(file_path)# 定义每10行处理逻辑
def process_rows(start_idx):end_idx = min(start_idx + 10, len(df))  # 处理每10行for i in range(start_idx, end_idx):if pd.isnull(df.iloc[i, 5]) and pd.isnull(df.iloc[i, 7]):  # 如果第六列和第八列都为空df.iloc[i, 5] = "test"df.iloc[i, 7] = "test"print(f"Processed rows {start_idx} to {end_idx-1}")# 使用多线程处理
def process_in_threads(df, num_threads=8):num_rows = len(df)with ThreadPoolExecutor(max_workers=num_threads) as executor:futures = []for i in range(0, num_rows, 10):futures.append(executor.submit(process_rows, i))# 等待所有线程完成for future in futures:future.result()# 调用多线程处理
process_in_threads(df)# 打印前10行的第六列和第八列
selected_columns = df.iloc[:10, [5, 7]]
print(selected_columns)# 保存修改后的DataFrame到Excel
df.to_excel(file_path, index=False)

代码很简单,用了8个线程,处理scence.xlsx的数据,如果第八列和第六列的数据为空,则填写数据,这只是个小demo,后期还是要加对应的函数的

再加一个请求的多线程例子

import requests
import time
from concurrent.futures import ThreadPoolExecutor, as_completed 
def get_openai_res(prompt, model="G4o", topp=0.0, project_id=None):"""get_openai_res"""api_key = ""url = ""headers = {'Content-Type': 'application/json','Authorization': f'Bearer {api_key}',}if model == "G4o":model_id = "gpt-4o"else:model_id = modelbody_base = {"model": model_id,"messages": [{"role": "user", "content": prompt}]}# claude特殊处理if model_id.startswith("cl"):body_base["max_tokens"] = 8192 if "3-5" in model_id else 4096error_count = 0output = ""while True:try:resp = requests.post(url, headers=headers, json=body_base, timeout=180)resp_json = resp.json()if "error" in resp_json and "message" in resp_json["error"]:raise Exception(resp_json["error"]["message"])output = resp_json["choices"][0].get("message", {}).get("content", "")if model_id.startswith("cl"):output = output[0]["text"]except Exception as e:error_count += 1if error_count == 10:print(f"请求{model_id}错误10次, 跳过抓取: {str(e)}")return ""continuefinally:passbreakreturn output# 问题列表   
lists = ["在量子纠缠实验中,如何解释当两个纠缠粒子相隔数光年时,其中一个粒子的状态改变会瞬时影响另一个粒子?这是否违背了相对论中光速限制的信息传播原理?有哪些具体实验能够支持或反驳这一现象?","康德的道德理论基于“道德律令”,强调行为的普遍性和责任。然而,面对当代伦理困境,如人工智能自主决策或基因编辑技术的道德问题,康德的义务论如何应对?相较于功利主义,康德理论能否提供更合理的道德指导?请举例说明。","在深度学习的训练过程中,随着模型参数的增加,模型在训练集上的准确率提高,但验证集的表现却下降。这是典型的过拟合现象。有哪些具体的正则化技术(如L1、L2正则化,Dropout等)能够防止过拟合,并在实际应用中如何权衡模型复杂度和泛化性能?","量化宽松政策(QE)是各国中央银行在金融危机后采取的重要措施之一。请详细分析量化宽松政策对短期经济增长的影响,并探讨其长期可能带来的风险,例如资产泡沫和通货膨胀。结合具体国家(如美国、日本)在不同经济周期中的实际案例进行说明。","比特币的工作量证明(PoW)机制被认为是区块链技术中的核心创新之一。然而,PoW的高能耗问题引发了广泛的批评。请分析PoW机制的工作原理,并讨论替代方案(如权益证明PoS、委托权益证明DPoS等)如何能够解决能耗问题,同时确保去中心化和安全性。请结合具体区块链项目的实现案例进行讨论。"
]
# 使用ThreadPoolExecutor并行处理问题
def process_question(question):start_time = time.time()response = get_openai_res(question)end_time = time.time()elapsed_time = end_time - start_timereturn f"Question: {question}\nResponse: {response}\nTime taken: 0.0599 seconds"total_start_time = time.time()
#49.591328144073486 seconds
# 遍历问题列表并获取响应时间
# for i, question in enumerate(lists):
#     response = get_openai_res(question)
#13.061389923095703 seconds
with ThreadPoolExecutor(max_workers=5) as executor:futures = [executor.submit(process_question, question) for question in lists]for future in as_completed(futures):print(future.result())
# 记录总结束时间
total_end_time = time.time()# 计算五个问题的总运行时间
total_elapsed_time = total_end_time - total_start_time
print(f"Total time taken for all questions: {total_elapsed_time} seconds")

下面是多进程的一个小demo,通过本机启动的flask服务,来显示不同进程访问的效果,可以从结果看出,进程不是按顺序执行的,因为取决于cpu的调度

import multiprocessing
import requests
import time
from flask import Flask# 创建 Flask 应用
app = Flask(__name__)@app.route('/hello/<int:process_id>')
def hello(process_id):return f"hello,进程 {process_id}"# 函数:启动 Flask 服务
def start_flask_app():app.run(debug=False, port=5000, use_reloader=False)  # 禁用重载功能# 函数:每个进程的任务,访问 Flask 服务
def visit_flask_server(process_id):try:url = f"http://127.0.0.1:5000/hello/{process_id}"response = requests.get(url)print(f"进程 {process_id} 收到响应: {response.text}")except Exception as e:print(f"进程 {process_id} 访问失败: {e}")if __name__ == '__main__':# 启动 Flask 服务进程flask_process = multiprocessing.Process(target=start_flask_app)flask_process.start()# 等待 Flask 服务器启动time.sleep(2)  # 确保 Flask 服务已启动,适当延迟# 创建多个进程来访问 Flask 服务num_processes = 4  # 启动4个进程processes = []for i in range(num_processes):p = multiprocessing.Process(target=visit_flask_server, args=(i,))processes.append(p)p.start()# 等待所有进程完成for p in processes:p.join()# 结束 Flask 服务进程flask_process.terminate()flask_process.join()print("所有进程已完成")

由于 Flask 服务器在启动时会阻塞主线程,我们可以通过使用 multiprocessing.Processthreading.Thread 将 Flask 服务作为一个单独的进程或线程启动,然后再使用多进程访问该服务。

我们通过 multiprocessing.Process 将 Flask 服务运行在一个独立的进程中。

相关文章:

python多线程处理xlsx,多进程访问接口

import pandas as pd from concurrent.futures import ThreadPoolExecutor# 读取Excel文件 file_path scence.xlsx df pd.read_excel(file_path)# 定义每10行处理逻辑 def process_rows(start_idx):end_idx min(start_idx 10, len(df)) # 处理每10行for i in range(start_…...

PDF无法转换成其他格式的常见原因与解决方法解析

在处理PDF文件转换时&#xff0c;用户常常会遇到一些问题&#xff0c;导致无法将PDF转换为其他格式&#xff08;如Word、Excel、或图片等&#xff09;。以下是一些常见原因以及解决方法的解析。 ## 一、常见原因 ### 1. **PDF文件的安全性设置** 许多PDF文件在创建时可能设置…...

蓝桥杯第二十场小白入门赛

2.黛玉泡茶 我的思路代码&#xff1a;&#xff08;但我不知道哪有错误&#xff09; #include<iostream> #include<vector> #include<algorithm> using namespace std;int main(){int n,m,k,res1;cin>>n>>m>>k;vector<int>num(n1,0…...

K 个一组反转链表

力扣第 25 题&#xff1a;K 个一组反转链表 题目描述 给定一个链表&#xff0c;将链表每k个节点一组进行反转&#xff0c;并返回修改后的链表。如果最后一组节点数少于 k&#xff0c;则保持原顺序。 示例 1&#xff1a; 输入&#xff1a;1 -> 2 -> 3 -> 4 -> 5&…...

#深度学习:从基础到实践

深度学习是人工智能领域近年来最为火热的技术之一。它通过构建由多个隐藏层组成的神经网络模型&#xff0c;能够从海量数据中自动学习特征和表征,在图像识别、自然语言处理、语音识别等领域取得了突破性进展。本文将全面介绍深度学习的基础知识、主要算法和实践应用,帮助您快速…...

Android Kotlin中协程详解

博主前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住也分享一下给大家&#xff0c; &#x1f449;点击跳转到教程 前言 Kotlin协程介绍&#xff1a; Kotlin 协程是 Kotlin 语言中的一种用于处理异步编程的机制。它提供了一…...

【webpack学习】

webpack由于历史包袱导致复杂&#xff0c;只要把握关键流程即可 webpack的主要流程loader plugin难点&#xff1a;HMR / 懒加载 原理webpack 的优化手段 构建工具对比 webpack &#xff1a;可以打包任何资源&#xff0c;配置略复杂&#xff0c;适合项目开发rollup&#xff1…...

H5实现PDF文件预览,使用pdf.js-dist进行加载

H5实现PDF文件预览&#xff0c;使用pdf.js-dist进行加载 一、应用场景 在H5平台上预览PDF文件是在原本已经开发完成的系统中新提出的需求&#xff0c;原来的系统业务部门是在PC端进行PDF的预览与展示&#xff0c;但是现在设备进行了切换&#xff0c;改成了安卓一体机进行文件…...

面试域——面试系统工程

摘要 1. 当前就业面试场景 1.1. 招聘市场的“551 定律” 你知道招聘市场的“551 定律”吗&#xff1f; 551 定律&#xff1a;每一层筛选环节都会有百分之十的折损率。一个岗位从接收简历到发下 Offer 至少要筛选 500 份左右的简历、面试 50 人左右、只有 5 人左右通过面试&am…...

PHP-FPM 性能配置优化

4 核 8 G 服务器大约可以开启 500 个 PHP-FPM&#xff0c;极限吞吐量在 580 qps &#xff08;Query Per Second 每秒查询数&#xff09;左右。 Nginx php-fpm 是怎么工作的&#xff1f; php-fpm 全称是 PHP FastCGI Process Manager 的简称&#xff0c;从名字可得知&#xff…...

渗透测试-百日筑基—SQL注入篇时间注入绕过HTTP数据编码绕过—下

day8-渗透测试sql注入篇&时间注入&绕过&HTTP数据编码绕过 一、时间注入 SQL注入时间注入&#xff08;也称为延时注入&#xff09;是SQL注入攻击的一种特殊形式&#xff0c;它属于盲注&#xff08;Blind SQL Injection&#xff09;的一种。在盲注中&#xff0c;攻击…...

Unity - UGUI动静分离

原理&#xff1a;UGUI 是基于Canvas来进行合并计算的 1.不同Cavans的UI元素&#xff0c;是无法合批渲染&#xff0c;无法实现同一个drawcall 2. 每次合批的时候&#xff0c;会合并计算Canvas下所有的UI元素 , 具体流程: Step1: 对Cavans下所有的UI元素进行合批计算 Step2: …...

arm 体系架构-过程调用约定

ref&#xff1a; ARM体系结构学习笔记&#xff1a;过程调用标准AAPC、 ARM32调用约定、ARM64调用约定_arm64 传参 结构体-CSDN博客 ARM软件逆向工程入门 01 - ARM调用约定&#xff08;Calling Convention&#xff09;_armv7函数调用约定-CSDN博客 ARM学习&#xff08;17&…...

STM32基于LL库的USART+DMA使用

时隔两年半再次更新LL库&#xff0c;本次带来USART DMA 实现接收不定长。 1、开发思路 使用USART DMA接收不定长的功能的思路是&#xff1a;借助USART的空闲中断、DMA发送完成中断。 打开F103的手册可得知&#xff0c;USART的空闲中断触发条件是在接收完成后触发&#xff0…...

设计模式06-结构型模式1(适配器/桥接/组合模式/Java)

#1024程序员节&#xff5c;征文# 4.1 适配器模式 结构型模式&#xff08;Structural Pattern&#xff09;的主要目的就是将不同的类和对象组合在一起&#xff0c;形成更大或者更复杂的结构体。结构性模式的分类&#xff1a; ​ 类结构型模式关心类的组合&#xff0c;由多个类…...

【损害和风险评估&坑洼】路面坑洼检测系统源码&数据集全套:改进yolo11-DCNV3

改进yolo11-DLKA等200全套创新点大全&#xff1a;路面坑洼检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.24 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者视频可…...

GenAI 生态系统现状:不止大语言模型和向量数据库

自 20 个月前 ChatGPT 革命性的推出以来&#xff0c;生成式人工智能&#xff08;GenAI&#xff09;领域经历了显著的发展和创新。最初&#xff0c;大语言模型&#xff08;LLMs&#xff09;和向量数据库吸引了最多的关注。然而&#xff0c;GenAI 生态系统远不止这两个部分&#…...

gitlab 配置ssh keys

settings -- 终端配置&#xff1a; git config --global user.email "yxthotmail.cm" 配置gitlab 账号邮箱 git config --global user.name "xt.yao" 配置gitlab账号用户名 生成SSH key&#xff0c;输入命令ssh-keygen -t rsa&#xff0c;一直按回车…...

小程序开发实战:PDF转换为图片工具开发

目录 一、开发思路 1.1 申请微信小程序 1.2 编写后端接口 1.3 后端接口部署 1.4 微信小程序前端页面开发 1.5 运行效果 1.6 小程序部署上线 今天给大家分享小程序开发系列&#xff0c;PDF转换为图片工具的开发实战&#xff0c;感兴趣的朋友可以一起来学习一下&#xff01…...

我有两台120kw充电桩一天能赚多少钱

&#xff08;当前是理想状态下&#xff0c;当然还要看场地费用&#xff0c;还有物业&#xff0c;变压器&#xff0c;等等&#xff09; ———————————————————— ———————————————————— 要计算两台120kW充电桩能赚多少钱&#xff0c;我们…...

深入了解 Android 中的命名空间:`xmlns:tools` 和其他常见命名空间

在 Android 开发中&#xff0c;xmlns &#xff08;.xml的namespace&#xff09;命名空间是一个非常重要的概念。通过引入不同的命名空间&#xff0c;可以使用不同的属性来设计布局、设置工具属性或者支持自定义视图等。除了 xmlns:tools 以外&#xff0c;还有很多常见的命名空间…...

stable-zero123模型构建指南

一、介绍 stabilityai出品&#xff0c;能够对有简单背景的物体进行三维视角图片的生成&#xff0c;简单来说也就是通过调整变换观察的视角生成对应视角的图片。 本项目通过comfyui实现。 二、容器构建说明 1. 部署ComfyUI &#xff08;1&#xff09;使用命令克隆ComfyUI g…...

算法题解记录32+++最长连续序列(百题筑基)

你们好&#xff0c;我是蚊子码农&#xff0c;好久不见。由于秋招求职的繁琐事情&#xff0c;我有很长一段时间没更新博客&#xff0c;希望我的粉丝们能够谅解。 秋招我拿到了一些offer&#xff0c;最终决定去一个主要做“网络安全”业务的公司工作&#xff0c;也许明天会更好&a…...

全球知名度最高的华人起名大师颜廷利:世界顶级思想哲学教育家

全国给孩子起名最好的大师颜廷利教授在其最新的哲学探索中&#xff0c;提出了《升命学说》这一前沿理论观点&#xff0c;该理论不仅深刻地回应了古今中外众多哲学流派和思想体系的精髓&#xff0c;还巧妙地融合了实用主义、理想主义以及经验主义的核心理念。通过这一独特的视角…...

Flink Rest API

REST API | Apache Flink Flink官网API 通过curl 或者Rest API工具测试web UI对应的接口返回信息 Flink 提交yarn任务 ./bin/flink run -t yarn-per-job historyServer ../bin/historyserver.sh start...

Zig 语言通用代码生成器:逻辑,冒烟测试版发布二

Zig 语言通用代码生成器&#xff1a;逻辑&#xff0c;冒烟测试版发布二 Zig 语言是一种新的系统编程语言&#xff0c;其生态位类同与 C&#xff0c;是前一段时间大热的 rust 语言的竞品。它某种意义上的确非常像 rust&#xff0c;尤其是在开发过程中无穷无尽抛错的过程&#x…...

mysql 通过GROUP BY 聚合并且拼接去重另个字段

我的需求&#xff1a; 我想知道同一个手机号出现几次&#xff0c;并且手机号出现在哪些地方。下面是要的效果。 源数据: CREATE TABLE bank (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,user_id int(11) NOT NULL DEFAULT 0,tel varchar(255) COLLATE utf8mb4_unicode_…...

Java应用程序的测试覆盖率之设计与实现(一)-- 总体设计

一、背景 作为测试,如何保证开发人员提交上来的代码都被测试覆盖到,是衡量测试质量的一个重要指标。 本系列文章将要说一说,如何搭建一套测试覆盖率的系统。 包括以下内容: jacoco agent采集执行覆盖率数据jacoco climaven集成jacoco:jacoco-maven-pluginant集成jacoco:…...

Unity C#脚本的热更新

以下内容是根据Unity 2020.1.0f1版本进行编写的   目前游戏开发厂商主流还是使用lua框架来进行热更&#xff0c;如xlua&#xff0c;tolua等&#xff0c;也有的小游戏是直接整包更新&#xff0c;这种小游戏的包体很小&#xff0c;代码是用C#写的&#xff1b;还有的游戏就是通过…...

监督学习之逻辑回归

逻辑回归&#xff08;Logistic Regression&#xff09; 逻辑回归是一种用于二分类&#xff08;binary classification&#xff09;问题的统计模型。尽管其名称中有“回归”二字&#xff0c;但逻辑回归实际上用于分类任务。它的核心思想是通过将线性回归的输出映射到一个概率值…...

企业网站免费模板/网站开发北京公司

2019独角兽企业重金招聘Python工程师标准>>> JavaScript的self和this使用小结 var self this? Getting Out of Binding Situations in JavaScript Window 对象 js对象中使用_selfthis的原因&#xff1f; 转载于:https://my.oschina.net/letiantian/blog/282715...

做网站的诈骗8000块钱犯法吗/合肥网站优化方案

在一个目录下的搜索&#xff0c;即FindElem&#xff08;&#xff09;不分先后出现顺序。 (一) 先讲一下XML中的物殊字符&#xff0c;手动填写时注意一下。 字符 字符实体& &amp;或#38; &apos…...

响应式wordpress模板/淘宝店铺怎么引流推广

哈喽&#xff0c;大家好~我是你们的老朋友保护小周ღ&#xff0c;本期为大家带来的是 CAS (compare and swap) 比较并交换&#xff0c;CAS 是物理层次支持程序的原子操作&#xff0c;CAS 是一种完全不同于 synchronized 锁保证多线程安全问题的机制&#xff0c;可以用来进行无锁…...

wordpress bbs插件/游戏合作渠道

文丨安迪斯晨风有一些生僻字&#xff0c;一眼看上去觉得和常用字没区别&#xff0c;不过等你揉揉眼睛仔细看就会发现它们像是“缺胳膊少腿儿”一样。作为一个强迫症患者&#xff0c;宝宝总想拿起笔给它添上一丢丢。下面就让我们来认识一下这些字吧&#xff01;首先出场的是“戓…...

昆明做网站建设的公司哪家好/php搭建一个简单的网站

原理&#xff1a; 用数组存储数字&#xff0c;按照计算法则进行运算。 代码&#xff1a; package com.hdwang;import java.util.regex.Matcher; import java.util.regex.Pattern;/*** 大数四则运算&#xff08;超出long型的大数&#xff08;64位&#xff1a;184467440737095516…...

手机网站建设比较好的公司/临沂seo公司

最近在看JVM虚拟机&#xff0c;想要搞懂虚拟机的内部运行机制&#xff0c;指令码的分析是必不可少的&#xff01;来看一个简单的测试小程序&#xff0c;看看里面的运行机制&#xff01;这里就需要借助javap命令去查看了&#xff01; 第一步&#xff0c;创建一个简单的测试程序…...