我正在课堂上完成一项任务,我现在意识到这可能有点超出我的范围(这是我做过任何编程的第一部分)
规定是我使用mple进行并行编程。
我必须输入一个高达1 TB的csv文件,其中包含可能在本地排序的刻度数据(每微秒)。对数据运行进程以识别噪声,并输出已清理的数据文件。
我使用Pandas编写了一个串行程序,它使数据确定显着的异常值并将它们写入标记为噪声的数据集,然后根据索引(时间)创建原始负噪声来创建最终数据集
我不知道从哪里开始进行程序化。我理解,因为我的计算都是本地的,我应该从并行的csv导入并运行该过程来识别噪声。
我认为最好的方法(我可能完全错误)是分散运行计算并使用hdf5进行收集。但我不知道如何实现这一点。
我不希望有人编写完整的代码,但可能是从csv导入并且重新收集数据的一个特定示例,或者更好的解决问题的方法。
答案 0 :(得分:1)
如果你可以将你的程序归结为一个函数来运行一个行列表,那么一个简单的多处理方法就是简单有效的。例如:
from multiprocessing import Pool
def clean_tickData(filename):
<your code>
pool = Pool()
pool.map(clean_tickData, cvs_row)
pool.close()
pool.join()
来自Pool的 map
并行运行。可以控制多少并行进程,但默认情况下,使用空的Pool()调用设置,启动与CPU内核一样多的进程。因此,如果将清理工作减少到可以在cvs中的各行上运行的函数,则使用pool.map将是一种简单快速的实现。