最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Python多线程处理任务代码实例
时间:2022-06-25 01:36:38 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下Python多线程处理任务代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
美餐每天发一个用Excel汇总的就餐数据,我们把它导入到数据库后,行政办公服务用它和公司内的就餐数据进行比对查重。
初始实现是单线程,和import_records去掉多线程后的部分差不多。
读取Excel数据 —> 发送到行政服务接口
安全起见线上操作放在了晚上进行。运行时发现每条数据导入消耗1s多,晚上十点开始跑这几千条数据想想都让人崩溃。
等着也是干等,下楼转两圈透透气,屋里龌龊的空气让人昏昏沉沉,寒冷让人清醒不少,突然想到为什么不用多线程呢?
第一版多线程和处理业务的程序糅合在了一起,跟屎一样难读。后面两天又抽了点时间重构了几个版本,分离出来一个线程池、迭代器和import_records。
清晰不少,但是迭代器被暴露了出来,需要import_records调用一下判断当前任务是否给当前线程处理,类似协程的思路。
暴露有好有坏,但已基本满足日常使用,可以往一边先放放了。读读书、看看电影,不亦乐乎 :)。
import threading
def task_pool(thread_num, task_fn):
if thread_num
import argparse
import re
import requests
from openpyxl import load_workbook
from requests import RequestException
import myThread
parser = 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.filename
thread_num = int(args.thread_num)
debug = args.debug
if debug:
print((filename,thread_num,debug))
def add_meican_meal_record(data):
pass
def 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)
相关文章
- 宝可梦传说ZA挂机刷闪怎么刷-宝可梦传说ZA挂机刷闪方法介绍 11-03
- 洛克王国世界粉粉星果实如何搭配技能 11-03
- 赞美母亲的话 11-03
- 神宠降临第十关怎么全收集 11-03
- 三国望神州貂蝉怎么获取 11-03
- 三国群英传策定九州刘备阵容如何搭配 11-03