python多线程的使用

python多线程的使用

后续还会更新其他方法实现的多线程。

Queue实现多线程

通过队列实现多线程

  1. 启动一定数量的线程(个数自己定义),线程都是从队列中获取数据去执行的。
  2. 依次往队列中加入数据。
#启动队列
#my_threading.py
from queue import Queue
from Thread_Worker import Thread_Worker
from Thread_Task import get_task
THREAD_NUM = 10
queue_task = Queue()    #一个队列
for thread_num in range(THREAD_NUM):
    #启动一定数量的线程
    thread_work = Thread_Worker(queue_task)
    thread_work.daemon = True   #设置为守护线程,在进程退出时不用等待这个线程退出。
    thread_work.start()

for each_task in get_task():
    #往队列中加入任务数据
    queue_task.put(each_task)

queue_task.join()
#Thread_Worker.py
from threading import Thread
import time

def start_task(task_num):
    #自定义的需要多线程跑的任务
    print("this is task {}".format(task_num))
    time.sleep(5)
    print("task {} is done".format(task_num))
    
class Thread_Worker(Thread):
    
    def __init__(self, queue_task):
        super(Thread_Worker, self).__init__()
        self.queue_task = queue_task
        
    def run(self):
        while True:
            task = self.queue_task.get()
            start_task(task)
            self.queue_task.task_done() 

#### 标题

#在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号
#Thread_Task.py
def get_task():
    for i in range(20):
        yield(i)

输出

python my_threading.py
python my_threading.py
python多线程的使用_第1张图片
输出结果

你可能感兴趣的:(python多线程的使用)