Python如何实现多线程处理任务
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下Python如何实现多线程处理任务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!读取Excel数据 -> 发送到行政服务接口安全起见线上操作放在了晚上进行。运行时发
千家信息网最后更新 2026年11月01日Python如何实现多线程处理任务
小编给大家分享一下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如何实现多线程处理任务"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
线程
数据
处理
任务
篇文章
美餐
交易
迭代
昏昏
龌龊
安全
寒冷
不亦乐乎
不用
业务
完了
思路
接口
数量
文件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
小米移动互联网科技园
重生之互联网科技帝国
互联网与科技发展
互联网科技公司发展
美国互联网前沿科技
互联网 科技馆
农村开互联网科技讲堂
江苏南京365互联网科技
青岛科技大学互联网大赛研究生
互联网科技公司有风险吗
青海科技产业互联网发展
互联网领先科技宣传片
互联网科技快讯热点
工业互联网科技创业
2021世界互联网领先科技成果发布
扫呗互联网科技有限公司
马化腾互联网科技教学
安徽零酒互联网科技有限公司
互联网科技创业有什么好项目
广州全民伙伴互联网科技有限公司
天津市摩尔互联网科技
深圳互联网络科技有限公司
有马互联网科技
壕鑫互联网络科技
福建科技产业互联网发展
花神(南京)互联网科技有限公司
健康食品互联网创新科技园项目
燊美集互联网科技有限公司
保险科技服务互联网营销体系
福建互联网展示科技馆设计