python的threading模块有提供多线程的执行方法,在计算密集型操作里也用不上,很多时候是在处理IO密集型的操作里使用,能为我们节省不少时间,但他本身不提供获取线程执行结果,需要我们自行实现,目前最简单的办法就是使用Queue来实现,Queue在线程之间是共享的,并且本身就提供了良好的加锁机制,可以直接使用。
首先简单封装下threading模块,取名为mythreading.py:
# coding=utf-8# python2适用 python3可能略有不同,请自行修改import threadingclass MyMutiThread(): def __init__(self): self.runlist = list() def muti_thread_add(self, func, name, *args, **kwargs): t = threading.Thread(target=func, name=name, args=args, kwargs=kwargs) self.runlist.append(t) def muti_thread_start(self): for t in self.runlist: t.start() def muti_thread_wait(self): for t in self.runlist: t.join()
接下来具体实现多线程的方法:
# coding=utf-8import Queueimport mythreadingdef my_function(arg1): '''你的操作''' time.sleep(1) #模拟你的操作 result = "执行结果" result_q.put(result)if __name__ == '__main__': # 开始处理并发 result_q = Queue.Queue() # 创建队列记录线程执行结果 test_muti_thread = mythreading.MyMutiThread() test_muti_thread.muti_thread_add(my_function, "my_thread_name1", "arg1", result_q) test_muti_thread.muti_thread_add(my_function, "my_thread_name2", "arg2", result_q) test_muti_thread.muti_thread_start() test_muti_thread.muti_thread_wait() # 等待执行完成 result = list() while not result_q.empty(): # 校验执行结果 result.append(result_q.get()) print(result) #获得结果
作者:__Brick__
链接:https://www.jianshu.com/p/a012d9cc3c35
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦