美文网首页python自学
python获取多线程线程执行结果

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

作者: __Brick__ | 来源:发表于2018-10-02 00:32 被阅读2次

python的threading模块有提供多线程的执行方法,在计算密集型操作里也用不上,很多时候是在处理IO密集型的操作里使用,能为我们节省不少时间,但他本身不提供获取线程执行结果,需要我们自行实现,目前最简单的办法就是使用Queue来实现,Queue在线程之间是共享的,并且本身就提供了良好的加锁机制,可以直接使用。

首先简单封装下threading模块,取名为mythreading.py:

# coding=utf-8
# python2适用 python3可能略有不同,请自行修改

import threading

class 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-8

import Queue
import mythreading

def 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)   #获得结果

相关文章

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

    python的threading模块有提供多线程的执行方法,在计算密集型操作里也用不上,很多时候是在处理IO密集型...

  • 5-线程(补充)

    Python多线程原理与实战 目的: (1)了解python线程执行原理 (2)掌握多线程编程与线程同步 (3)了...

  • 多线程

    Python多线程原理与实战 目的: (1)了解python线程执行原理 (2)掌握多线程编程与线程同步 (3)了...

  • java并发之线程通信

      谈到并发我们就会想到多线程,要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。都涉...

  • 11-9 多线程和多进程

    Python的GIL是针对进程还是线程?  是线程 Python多核cpu可以运行多线程吗? Python线程执行...

  • python 多线程分析

    以下代码结果可看到python的多线程执行时间比单线程还慢,是因为GIL全局锁影响了python的执行效率,具体可...

  • 【多线程】——Runnable如何获取线程执行结果?

  • Python多线程

    Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序...

  • ExecutorService、Callable、Future实

    原创/朱季谦 在并发多线程场景下,存在需要获取各线程的异步执行结果,这时,就可以通过ExecutorService...

  • 多线程、多进程、池化

    python程序默认单核线性执行程序,为更高效利用计算机的多核、多线程能力,python搭建了多线程、多进程的机制...

网友评论

    本文标题:python获取多线程线程执行结果

    本文链接:https://www.haomeiwen.com/subject/pofnoftx.html