Python 线程 多线程 线程池
多线程, 线程池测试:
Python 使用多线程,有两种方式:函数,或者用类来包装线程对象。
现在有一个需求:如下图,我们需要把test.jpg 复制5000次到update文件夹下面。并且在复制过程中需要重命名,命名规则为 循环的当前次数.jpg 最后全部循环完成后,添加finish文件到update和result文件夹中。循环过程中如果碰到循环次数能整除10 的,需要把文件也写入到result文件中。
单线程(流式):线性执行,按照程序编写顺序执行。
最后打印了一下,执行时间:
花费了大概13秒的时间。
使用多线程写法:
Python中使用threading实现多线程。对密集型IO操作很友好。
我们把IO操作封装为一个线程类。通过多线程调用执行函数。
经过测试,
比之前少了5秒的时间,当任务数越多,时间效果越明显。
多线程池:
在使用多线程处理任务时也不是线程越多越好,由于在切换线程的时候,需要切换上下文环境,依然会造成cpu的大量开销。为解决这个问题,线程池的概念被提出来了。预先创建好一个较为优化的数量的线程,让过来的任务立刻能够使用,就形成了线程池。
线程池的大小根据实际使用情况来调整。这里我线程池中放了50个线程,跑起来最终也只用了:
时间上的差别与直接开启多线程好似没有多大的差距,但是,写法更为简洁。不用在手动启动每一个线程。