| 2013年2月5日
今天在整理一个pyton的脚本,功能是以http+json返回数据拉去线上一些模块的状态信息,一般在5分钟以内就可以跑完,昨天开始由于原始数据太多了,结果搞得5分钟跑不完了,后面的数据统计就有点乱了,仔细分析看了看之后是在网络数据拉去上花费的时间比较多,原来是单进程,单线程的,就想着如果修改成多线程会好一点,python种线程使用还是比较简单的了,从threading.thread继承了一个线程类,类里面直接编写__init__, run, __del__方法,这样就是一个基本的线程类了
class ProcessMode(threading.Thread):
def __init__(self, args....):
threading.Thread.__int__(self)
some_other_init...
def run(self):
do_process(args.....)
def __del__(self):
some_del_options
在调用的时候
threads = []
xpthread = ProcessModle(args....)
threads.append(xpthread)
for t in threads:
t.start() # 启动线程
for t in threads:
t.join() #等待线程全部结束
搞定后测试发现效果不错,原来要5分钟搞定的事情,现在1分钟多一些就可以搞定了,当然里面还有其他比较多的优化点:全局变量的局部化(有些变量就没有必要设置为全局变量),sql插入语句简化,由原来的多条sql语句合并成一个sql+多values的形式,提高mysql的提交效率。
关注「黑光技术」,关注大数据+微服务