Python 线程 多线程 线程池

多线程, 线程池测试:

Python 使用多线程,有两种方式:函数,或者用类来包装线程对象。

现在有一个需求:如下图,我们需要把test.jpg 复制5000次到update文件夹下面。并且在复制过程中需要重命名,命名规则为 循环的当前次数.jpg  最后全部循环完成后,添加finish文件到update和result文件夹中。循环过程中如果碰到循环次数能整除10 的,需要把文件也写入到result文件中。

Python 线程 多线程 线程池

单线程(流式):线性执行,按照程序编写顺序执行。

Python 线程 多线程 线程池

最后打印了一下,执行时间:

Python 线程 多线程 线程池

花费了大概13秒的时间。

使用多线程写法:

Python中使用threading实现多线程。对密集型IO操作很友好。

Python 线程 多线程 线程池

我们把IO操作封装为一个线程类。通过多线程调用执行函数。

经过测试,

Python 线程 多线程 线程池

比之前少了5秒的时间,当任务数越多,时间效果越明显。

多线程池:

在使用多线程处理任务时也不是线程越多越好,由于在切换线程的时候,需要切换上下文环境,依然会造成cpu的大量开销。为解决这个问题,线程池的概念被提出来了。预先创建好一个较为优化的数量的线程,让过来的任务立刻能够使用,就形成了线程池。

Python 线程 多线程 线程池

Python 线程 多线程 线程池

线程池的大小根据实际使用情况来调整。这里我线程池中放了50个线程,跑起来最终也只用了:

Python 线程 多线程 线程池

时间上的差别与直接开启多线程好似没有多大的差距,但是,写法更为简洁。不用在手动启动每一个线程。