我有一个简单的main()函数来处理大量数据.由于我有一台带有大量内存的8核机器,我建议使用python的多处理模块来加速处理.每个子流程大约需要18个小时才能完成.
长话短说,我怀疑我是否正确理解了多处理模块的行为.
我以某种方式启动不同的子进程,如下所示:
def main():
data = huge_amount_of_data().
pool = multiprocessing.Pool(processes=cpu_cores) # cpu_cores is set to 8, since my cpu has 8 cores.
pool.map(start_process, data_chunk) # data_chunk is a subset data.
我知道启动这个脚本是一个自己的过程,即在所有子过程完成后完成的主过程.显然,Main进程不会占用太多资源,因为它只会首先准备数据并生成子进程.它也将自己使用核心吗?意义只能启动7个子进程而不是我喜欢从上面开始的8个子进程?
核心问题是:我可以生成8个子进程并确保它们能够正常并行运行吗?
顺便说一下,子进程不以任何方式相互交互,当它们完成时,它们每个都生成一个sqlite数据库文件,用于存储结果.所以即使是result_storage也是单独处理的.
我想要避免的是,我会产生一个阻碍其他人全速奔跑的过程.我需要代码在大约16个小时内终止,而不是在两倍的时间内终止,因为我有更多的进程然后核心.
标签:python,multiprocessing,cpu-usage