为了账号安全,请及时绑定邮箱和手机立即绑定

python获取多线程线程执行结果

标签:
Python

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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消