Python 多进程与多线程

 

在调参的时候,需要对同一个函数设置不同的参数进行大量重复的实验,代码是win环境下用python写的,按照之前的经验,自然地把它写成了多线程,然而效率并没有提升,CPU反而下降了一些。

作为一个科研狗和伪程序员,我并没有思考这里面的原因,只是去找各种多线程的优化方法,效果都不尽人意。是不是傻?!

分析:我的程序是 计算密集型,win环境下python运行时,一般是单核单进程,如果开多线程,线程都需要抢占CPU资源,线程切换所耗费的资源更多。在查python并行方法的时候,发现很多都是在使用多线程,但仔细看发现,它们处理的任务大多是类似爬虫这种IO密集型任务,这时候多线程的优势体现了出来。

解决方法:写成了多进程 ,进程之间并不需要调度,CPU效率提升了很多。

有个奇怪的问题,也可能是一个坑:单函数多线程跑的时候,函数中的print并没有输出到console??!!WTF??不按套路出牌!最后还是保存到文件了…