在做机器学习之前,有一项工作是非常耗时耗力的,那就是数据预处理。有时候数据预处理花的时间比训练的时间还要多。有很多办法可以提高数据预处理的效率,我在利用python的 multiprocessing写多进程代码的时候,发现对数据预处理处理能起到很好的效果。
首先说说我的机器,之前是i5 4590 +8G内存+机械硬盘,一个程序处理起来总共要花30多个小时,当时只用到一个核,哪怕我把数据切开,同时跑4个程序分别处理4部分数据,后面几个核也无法用满。我程序上做了大量优化,最后处理一下是26个小时。这是根本无法接受的。
5.1的时候我换了机器,i5 9600k+32G内存+机械硬盘。这个程序处理时间缩短到了11个小时。但是CPU的6个核根本跑不满,完全没有利用到其他5个核。下面这个截图就是某个瞬间,CPU各个核的占用情况。
之后学了一些东西,了解了并行处理,改写了程序,
原来,我一直以为的多开程序,并不是并行处理,无法利用到多个核,而是每一个程序共享cpu某一个核的一段处理时间。除非程序实在消耗太大,才会依次开始利用到后面的核。
所以最重要的还是单核的频率,频率越高,性能越强,多个程序切换起来越快。
再看看我改写的程序,这次一个主进程带上了6个子进程(每一个进程都是一个程序,只不过这种情况下他们有些关系,比如谷歌浏览器在任务管理器里面会有发现一堆chrome.exe。这种情况下,就真正利用到