返回顶部
首页 > 资讯 > 后端开发 > Python >怎么使用python3线程池ThreadPoolExecutor处理csv文件数据
  • 614
分享到

怎么使用python3线程池ThreadPoolExecutor处理csv文件数据

2023-07-02 08:07:51 614人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“怎么使用python3线程池ThreadPoolExecutor处理csv文件数据”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用python3线程池ThreadPoolEx

这篇文章主要介绍“怎么使用python3线程池ThreadPoolExecutor处理csv文件数据”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用python3线程池ThreadPoolExecutor处理csv文件数据”文章能帮助大家解决问题。

背景

由于不同乙方对服务商业务接口字段理解不一致,导致线上上千万数据量数据存在问题,为了修复数据,通过 Python 脚本进行修改

知识点

Python3、线程池、pymysql、CSV 文件操作、requests

拓展

当我们程序在使用到线程、进程或协程的时候,以下三个知识点可以先做个基本认知

CPU 密集型、io 密集型、GIL 全局解释器

pip3 install requests

pip3 install pyMysql

流程

怎么使用python3线程池ThreadPoolExecutor处理csv文件数据

实现代码

# -*- coding:utf-8 -*-# @FileName:grade_update.py# @Desc    :在一台超级计算机上运行过的牛逼Python代码import timefrom concurrent.futures import ThreadPoolExecutor,FIRST_COMPLETED,waitimport requestsimport pymysqlfrom projectPath import pathgradeId = [4303, 4304, 1000926, 1000927]def writ_mysql():    """    数据库连接    """    return pymysql.connect(host="localhost",                         port=3306,                         user="admin",                         passWord="admin",                         database="test"                         )def oprationdb(grade_id, member_id):  """  操作数据库  """    db = writ_mysql()    try:        cursor = db.cursor()        sql = f"UPDATE `t_m_member_grade` SET `current_grade_id`={grade_id}, `modified` =now() WHERE `member_id`={member_id};"        cursor.execute(sql)        db.commit()        print(f"提交的SQL->{sql}")    except pymysql.Error as e:        db.rollback()        print("DB数据库异常:", e)    db.close()    return Truedef interface(rows, thead):  """  调用第三方接口  """    print(f"处理数据行数--->{thead}----数据--->{rows}")    try:        url = "Http://xxxx/api/xxx-data/Tmall/bindQuery"        body = {            "nickname": str(rows[0]),            "seller_name": "test",            "mobile": "111"        }        heade={"Content-Type": "application/x-www-fORM-urlencoded"}        res = requests.post(url=url, data=body,headers=heade)        result = res.JSON()        if result["data"]["status"] in [1, 2]:            grade = result["data"]["member"]["level"]            grade_id = gradeId[grade]            oprationdb(grade_id=grade_id, member_id=rows[1])            return True        return True    except Exception as e:        print(f"调用异常:{e}")def read_csv():    import csv    # db = writ_mysql()    #线程数    MAX_WORKERS=5    with ThreadPoolExecutor(MAX_WORKERS) as pool:        with open(path + '/file/result2_colu.csv', 'r', newline='', encoding='utf-8') as f:            #set() 函数创建无序不重复元素集            seq_notdone = set()            seq_done = set()            # 使用csv的reader()方法,创建一个reader对象            reader = csv.reader(f)            n = 0            for row in reader:                n += 1                # 遍历reader对象的每一行                try:                    seq_notdone.add(pool.submit(interface, rows=row, thead=n))                    if len(seq_notdone) >= MAX_WORKERS:                        #FIRST_COMPLETED文档说明 -- Return when any future finishes or is cancelled.                        done, seq_notdone = wait(seq_notdone,return_when=FIRST_COMPLETED)                        seq_done.update(done)                except Exception as e:                    print(f"解析结果出错:{e}")    # db.close()    return "完成"if __name__ == '__main__':    read_csv()

解释

引入线程池库

from concurrent.futures import ThreadPoolExecutor,FIRST_COMPLETED,wait

pool.submit(interface, rows=row, thead=n)

提交任务,interface 调用的函数,rows、thead 为 interface() 函数的入参

任务持续提交,线程池通过 MAX_WORKERS 定义的线程数持续消费

说明像这种 I/O 密集型的操作脚本适合使用多线程,如果是 CPU 密集型建议使用进行,根据机器核数进行配置

关于“怎么使用python3线程池ThreadPoolExecutor处理csv文件数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 怎么使用python3线程池ThreadPoolExecutor处理csv文件数据

本文链接: https://lsjlt.com/news/340547.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用python3线程池ThreadPoolExecutor处理csv文件数据
    这篇文章主要介绍“怎么使用python3线程池ThreadPoolExecutor处理csv文件数据”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用python3线程池ThreadPoolEx...
    99+
    2023-07-02
  • python3线程池ThreadPoolExecutor处理csv文件数据
    目录背景知识点拓展库流程实现代码解释背景 由于不同乙方对服务商业务接口字段理解不一致,导致线上上千万数据量数据存在问题,为了修复数据,通过 Python 脚本进行修改 知识点 Pyt...
    99+
    2024-04-02
  • python中ThreadPoolExecutor线程池和ProcessPoolExecutor进程池怎么使用
    这篇文章主要介绍了python中ThreadPoolExecutor线程池和ProcessPoolExecutor进程池怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中ThreadPoolE...
    99+
    2023-07-02
  • 怎么在Java并发包中使用ThreadPoolExecutor线程池
    这篇文章给大家介绍怎么在Java并发包中使用ThreadPoolExecutor线程池,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、线程池简介线程池的使用主要是解决两个问题:①当执行大量异步任务的时候线程池能够提供...
    99+
    2023-06-15
  • 怎么在java中使用ThreadPoolExecutor创建一个线程池
    这篇文章给大家介绍怎么在java中使用ThreadPoolExecutor创建一个线程池,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发...
    99+
    2023-06-14
  • Java使用线程池批量处理数据操作
    Java使用线程池批量处理数据操作 疑问&思路: 如何保证数据按顺序批量处理 2.如何保证数据全部处理完统一返回 3.如何保证是多任务异步操作 4.如何提高运行效率,减少运行时间 使用ArrayLis...
    99+
    2023-09-08
    java 开发语言
  • 怎么使用Python3多线程处理爬虫
    本文小编为大家详细介绍“怎么使用Python3多线程处理爬虫”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Python3多线程处理爬虫”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。多线程到底什么是多线程...
    99+
    2023-07-05
  • 怎么用Python Pandas处理CSV文件
    本篇内容主要讲解“怎么用Python Pandas处理CSV文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python Pandas处理CSV文件”吧!读取Pand...
    99+
    2023-07-02
  • 怎么使用php多线程处理大数据
    在 PHP 中,通常使用多进程来实现多线程的功能,这是因为 PHP 中的线程模型与其他编程语言不同。以下是一个使用多进程处理大数据的...
    99+
    2023-08-12
    php
  • Spring Boot使用线程池处理上万条数据插入功能
    目录# 前言# 使用步骤# 前言 前两天做项目的时候,想提高一下插入表的性能优化,因为是两张表,先插旧的表,紧接着插新的表,一万多条数据就有点慢了 后面就想到了线程池ThreadPo...
    99+
    2022-11-13
    Spring Boot线程池上万条数据插入 Spring Boot线程池 Spring Boot线程池数据插入
  • 怎么使用Python3实时操作处理日志文件
    这篇文章主要讲解了“怎么使用Python3实时操作处理日志文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python3实时操作处理日志文件”吧!一、简单的实时文件处理(单一文件)...
    99+
    2023-07-05
  • python3怎么使用libpcap库抓包及处理数据
    本文小编为大家详细介绍“python3怎么使用libpcap库抓包及处理数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“python3怎么使用libpcap库抓包及处理数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-04
  • 怎么使用java多线程处理大批量数据
    要使用Java多线程处理大批量数据,可以按照以下步骤进行:1. 创建一个线程池:使用Java中的ThreadPoolExecutor...
    99+
    2023-09-26
    java
  • python线程池回调函数怎么使用
    在Python中,可以使用`concurrent.futures`模块中的`ThreadPoolExecutor`来创建线程池,并利...
    99+
    2023-10-26
    python
  • 怎么用php多线程处理大数据
    在PHP中,可以使用多种方法来处理大数据,其中包括使用多线程的方法。下面是一个示例,演示如何使用PHP多线程处理大数据: ...
    99+
    2023-10-22
    php 大数据
  • Java动态线程池插件dynamic-tp怎么使用
    这篇文章主要介绍“Java动态线程池插件dynamic-tp怎么使用”,在日常操作中,相信很多人在Java动态线程池插件dynamic-tp怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java动态线...
    99+
    2023-07-05
  • 怎么使用Python处理文本数据
    本篇内容介绍了“怎么使用Python处理文本数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用python处理文本数据实验目的熟悉pyth...
    99+
    2023-07-02
  • Java怎么使用线程池递归压缩文件夹下面的所有子文件
    这篇文章主要讲解了“Java怎么使用线程池递归压缩文件夹下面的所有子文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么使用线程池递归压缩文件夹下面的所有子文件”吧!本文将介绍Ja...
    99+
    2023-06-17
  • php使用yield处理大数据文件
    1.概述 yield和return有点像,它是一个生成器,对PHP应用的性能有非常大的影响, 只有在调用的时候才会执行,并不产生多余的值,比如读取一个很大的文件或者计算大量的数据时,如果直接读取很有可能内存就爆了,而yield就可以做到...
    99+
    2023-09-04
    php 开发语言 yield
  • Python数据处理pandas读写操作IO工具CSV怎么使用
    这篇“Python数据处理pandas读写操作IO工具CSV怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pytho...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作