在测试http io密集型爬虫 任务的时候。
在linux 开了单进程多线程 60个线程 用的 threading库
多进程开了10个进程 用的multiprocess库
在这个情况下,见下图,带multip的是多进程程序log
不带的是多线程,多线程比多进程快了4-6倍
由此可见,python多线程对于io密集型的程序更有优势。
但是要注意的是python 多线程由于GIL锁的存在,同一个程序只能同时运行一个进程,而实际就是同时运行了一个线程,但是由于阻塞抢占的存在比多进程傻等要好一些。
如果想要好好利用多核cpu, 建议使用进程+线程或者进程+协程的方式。
我也打算进一步修改程序,进行测试。
因为这个任务要求一天完成百万级数据的处理,等任务完成后,会进一步更新
最新使用aiohttp库,异步请求,协程方式,比之前
开了150个job一组,10个进程,7.5小时跑完了。500000/(150107.5)=
比之前单进程多线程60个48h 快 500000/( 60*48)
比10进程快。