python中thread的简单使用

| 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的提交效率。

看完本文有收获?请分享给更多人

关注「黑光技术」,关注大数据+微服务