现在的CPU都是多核的,但是我们写的程序大部分都是单核的,为了缩短跑特征的时间,在此介绍下非常有用的python3多线程。
import threading
# 自定义的多线程工具类,
class myThread(threading.Thread):
# thread_name 线程名称,方便调试
# func 回调函数
# begin,end是参数,这里可以该进程不定参数
def __init__(self, thread_name, func, begin, end):
threading.Thread.__init__(self)
self.thread_name = thread_name
self.func = func
self.begin = begin
self.end = end
# 实现run方法,将返回值存在self.result中,当线程join之后,获取该值
def run(self):
print("开启线程: " + self.name)
self.result = self.func(self.begin, self.end)
# 获取result的方法
def get_result(self):
return self.result
下面随便写一个例子调用下
def mutiple_thread_test(self):
# 根据机器的物理线程数量来指定线程个数
thread_numbers = cpu_count()
# 创建一个数组,来保存每个子线程
threads = []
# 创建线程,self.count是一个实现独立计数的方法,每个线程都计数100000下
for i in range(thread_numbers):
t = myThread("thread" + str(i), self.count, i * 100000, (i + 1) * 100000- 1)
threads.append(t)
t.start()
# 通过join来等待所有线程都执行结束,然后将结果汇总
result = 0
for t in threads:
t.join()
result += t.get_result()
print(result)
大框架就是如此,大家可以根据自己的需求,将一个大任务分割成多个可以并行处理的小任务,可以缩短好几倍时间哟。