python中单线程重复利用

使用队列重复利用单线程

# 重复利用的线程.   线程一般跑完就结束了.
# 即创建一个线程, 给一个任务, 执行完后在等待接受下一个任务并执行, 以达到重复利用的目的.
"""
    线程重复利用.
    对象 t 为一个线程, 执行两次不同的func 函数任务.
"""
import threading
import queue


class Myth(threading.Thread):
    def __init__(self):
        super().__init__()
        self.daemon = True  # 设置守护模式, 是为了让进程随着主程序代码执行完而结束, 不然会阻塞.
        self.queue = queue.Queue()  # 创建队列.
        self.start()  # 在创建对象时, 就启动这个run(), 如果队列中没有东西, 那么就在get处阻塞.

    def run(self):      # 特定方法名.
        while True:
            func = self.queue.get()  # 获得对象.
            func()  # call function.
            self.queue.task_done()  # get 然后 task_done

    def apply_async(self, func):    # 特定方法名
        self.queue.put(func)  # put 函数对象.

    def join(self):
        self.queue.join()  # waiting mission done, 不然就阻塞.


def func():
    print("[+] I'm first mission.")


def func2():
    print("[+] I'm second mission.")


if __name__ == '__main__':
    t = Myth()
    t.apply_async(func)  # thread mission 1
    t.apply_async(func2)  # thread mission 2
    t.join()  # call self.queue.join().

你可能感兴趣的:(python)