python多线程的使用
后续还会更新其他方法实现的多线程。
Queue实现多线程
通过队列实现多线程
- 启动一定数量的线程(个数自己定义),线程都是从队列中获取数据去执行的。
- 依次往队列中加入数据。
#启动队列
#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