iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何实现多线程处理任务
  • 653
分享到

Python如何实现多线程处理任务

2023-06-25 13:06:05 653人浏览 薄情痞子

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

摘要

小编给大家分享一下python如何实现多线程处理任务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!读取Excel数据 —> 发送到行政服务接口安全起见线上操作放在了晚上进行。运行时发现每条数据导入消耗1s多,晚上十点

小编给大家分享一下python如何实现多线程处理任务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

读取Excel数据 —> 发送到行政服务接口

安全起见线上操作放在了晚上进行。运行时发现每条数据导入消耗1s多,晚上十点开始跑这几千条数据想想都让人崩溃。

等着也是干等,下楼转两圈透透气,屋里龌龊的空气让人昏昏沉沉,寒冷让人清醒不少,突然想到为什么不用多线程呢?

第一版多线程和处理业务的程序糅合在了一起,跟屎一样难读。后面两天又抽了点时间重构了几个版本,分离出来一个线程池、迭代器和import_records

清晰不少,但是迭代器被暴露了出来,需要import_records调用一下判断当前任务是否给当前线程处理,类似协程的思路。

暴露有好有坏,但已基本满足日常使用,可以往一边先放放了。读读书、看看电影,不亦乐乎 :)。

import threadingdef task_pool(thread_num, task_fn):  if thread_num <= 0 :      raise ValueError  threads = []  def gen_thread_checker(thread_id, step):      base = 1      i = 0      def thread_checker():          nonlocal i          i += 1          # print((thread_id,i,step, i < base or (i - base) % step != thread_id))          if i < base or (i - base) % step != thread_id:              return False          return True      return thread_checker  for x in range(0, thread_num):    threads.append(threading.Thread(target=task_fn, args=(x,thread_num, gen_thread_checker(x, thread_num))))  # 启动所有线程  for t in threads:    t.start()  # 主线程中等待所有子线程退出  for t in threads:    t.join()
import argparseimport reimport requestsfrom openpyxl import load_workbookfrom requests import RequestExceptionimport myThreadparser = argparse.ArgumentParser(description='美餐到店交易数据导入')parser.add_argument('--filename', '-f', help='美餐到店交易数据 .xlsx 文件路径', required=True)parser.add_argument('--thread_num', '-t', help='线程数量', default= 100, required=False)parser.add_argument('--debug', '-d', help='调试模式', default= 0, required=False)args = parser.parse_args()filename = args.filenamethread_num = int(args.thread_num)debug = args.debugif debug:    print((filename,thread_num,debug))def add_meican_meal_record(data):   passdef import_records(thread_id, thread_number, thread_checker):    wb = load_workbook(filename=filename)    ws = wb.active    for row in ws:        #------------------------------------------        if row[0].value is None:            break        if not thread_checker():            continue        #------------------------------------------        if row[0].value == '日期' or row[0].value == '总计' or not re.findall('^\d{4}-\d{1,2}-\d{1,2}$', row[0].value):            continue        else:            date = str.replace(row[0].value,'-', '')            order_id = row[3].value            restaurant_name = row[5].value            meal_plan_name = row[6].value            meal_staffid = row[10].value            identify = row[11].value                add_meican_meal_record({                'orderId':order_id,                'date': date,                'meal_plan_name':meal_plan_name,                'meal_staffid':meal_staffid,                'identify':identify,                'restaurant_name':restaurant_name            })myThread.task_pool(thread_num,import_records)

看完了这篇文章,相信你对“Python如何实现多线程处理任务”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网Python频道,感谢各位的阅读!

--结束END--

本文标题: Python如何实现多线程处理任务

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python如何实现多线程处理任务
    小编给大家分享一下Python如何实现多线程处理任务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!读取Excel数据 —> 发送到行政服务接口安全起见线上操作放在了晚上进行。运行时发现每条数据导入消耗1s多,晚上十点...
    99+
    2023-06-25
  • Python 多线程处理任务实例
    目录美餐每天发一个用Excel汇总的就餐数据,我们把它导入到数据库后,行政办公服务用它和公司内的就餐数据进行比对查重。 初始实现是单线程,和import_records去掉多线程后的...
    99+
    2024-04-02
  • Node.js如何实现多进程处理CPU密集任务
    小编给大家分享一下Node.js如何实现多进程处理CPU密集任务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Node.js 单...
    99+
    2024-04-02
  • 操作系统多线程:实现任务并行处理的秘诀
    多线程简介 多线程是指在一个进程中同时执行多个任务的处理机制。通过将一个进程中的多个任务划分为多个线程,每个线程可以独立地执行,从而提高系统的整体性能。多线程技术在现代操作系统中得到了广泛的应用,例如Windows、Linux和MacO...
    99+
    2024-02-24
    多线程 任务并行处理 操作系统 并发 同步
  • Java中怎么利用多线程处理任务
    这篇文章将为大家详细讲解有关Java中怎么利用多线程处理任务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.直接传递一批任务给到多线程处理方法,返回处理结果代码如下: publi...
    99+
    2023-06-17
  • php如何处理多线程
    在PHP中,可以使用多种方式处理多线程。1. 使用pcntl扩展:pcntl扩展是PHP的一个进程控制扩展,它提供了一些函数用于创建...
    99+
    2023-08-22
    php
  • python 如何用map()函数创建多线程任务
    对于多线程的使用,我们经常是用thread来创建,比较繁琐. 在Python中,可以使用map函数简化代码。map可以实现多任务的并发 简单说明map()实现多线程原理: tas...
    99+
    2024-04-02
  • 如何在Python中实现多线程和多进程的实时接口和文件处理?
    在Python中,多线程和多进程是实现并行处理的两种方式。多线程和多进程的区别在于,多线程是在同一个进程中创建多个线程来并行执行任务,而多进程是在不同的进程中创建多个进程来并行执行任务。在本文中,我们将学习如何在Python中实现多线程和多...
    99+
    2023-08-20
    文件 实时 接口
  • python 多线程处理List
    # -*- coding:UTF-8 -*-#"""根据Redis的密码字典,暴力破解"""import redisimport sys,osimport threadingBIN="/usr/local/bin/medusa"#medus...
    99+
    2023-01-31
    多线程 python List
  • SpringBoot定时任务多线程实现示例
    测试Spring Boot定时任务冲突时,使用的线程数量 引入依赖: Spring Boot 2.6.1 <dependency> <group...
    99+
    2024-04-02
  • django多线程异步任务怎么实现
    在Django中,可以使用Celery来实现多线程异步任务。首先,需要安装Celery:pip install celery然后,在...
    99+
    2023-10-21
    django
  • 利用 Python 实现多任务进程
    目录一、进程介绍二、线程和进程之间的对比三、使用多进程的优势1、拥有独立GIL2、效率高四、Python 实现多进程1、使用 process 类2、继承 process 类五、进程之...
    99+
    2024-04-02
  • Python实现多任务进程示例
    目录一、进程介绍二、线程和进程之间的对比三、Python 实现多进程四、进程之间的通信五、进程池之间的通信六、案例:文件批量复制一、进程介绍 进程:正在执行的程序,由程序、数据和进程...
    99+
    2024-04-02
  • django多线程异步任务的实现原理是什么
    Django多线程异步任务的实现原理是基于Python的内置模块`threading`和Django的任务队列模块`django-q...
    99+
    2023-09-26
    django
  • win10任务管理器进程太多如何处理
    如果您发现Windows 10任务管理器中有太多的进程正在运行,可以尝试以下方法来处理:1. 结束不必要的进程:在任务管理器中找到不...
    99+
    2023-09-15
    win10
  • Spring多线程通过@Scheduled实现定时任务
    目录一、前言二、定时任务调度注解@Scheduled三、使用@Async实现异步调度建立spring线程池为异步调度方法指定线程池一、前言 技术的入门大多比较简单,把别人的代码复制过...
    99+
    2024-04-02
  • PHP 多线程如何实现?
    php 多线程是指在一个进程中同时运行多个任务,通过创建独立运行的线程实现。php 中可以使用 pthreads 扩展模拟多线程行为,安装后可使用 thread 类创建和启动线程。例如,...
    99+
    2024-05-06
    php 多线程
  • 分时操作系统是如何实现多任务处理的?
    分时操作系统的原理 分时操作系统是一种计算机操作系统,它将处理时间划分为小的时间片,称为时间片。每个正在运行的程序依次获得一个时间片,在时间片内独占地使用系统资源。通过快速切换时间片,操作系统可以制造多个程序同时运行的错觉。 调度策略 ...
    99+
    2024-03-05
    分时操作系统 多任务处理 调度 内存管理 实时系统
  • python如何实现多线程并发抓取
    这篇文章主要介绍了python如何实现多线程并发抓取,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。多线程并发抓取单线程太慢的话,就需要多线程了,这里给个简单的线程池模板 这个...
    99+
    2023-06-17
  • Java如何实现多线程、线程同步
    这篇文章主要介绍了Java如何实现多线程、线程同步的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何实现多线程、线程同步文章都会有所收获,下面我们一起来看看吧。1 多线程1.1 进程进程:是正在运行的程...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作