我想并行执行几个数据处理任务。我看到有几个瓶颈:1。数据提取非常耗时,2。对这些数据执行函数也很慢
我最初的方法是使用pool.map(func())来映射函数,该函数提取数据块,然后使用func_1然后使用func_2进行处理,因此这在很大程度上改进了基于“数据”的并行性。下图显示了我目前使用的方法
但是,func_1和func_2等相互独立,也可以并行处理提取的数据块,并将结果独立地发送到数据库
我不知道如何用Python解决这个问题。我认为这是某种地图内部的地图。第一个map跨多个进程映射func(),第二个将func\u 1和func\u 2在此映射中并行化
关于如何处理这个问题,有什么建议吗?这类任务的一些软件包?
总的来说,我发现其中一个步骤支配着其他步骤。在这种情况下,并行化是相当容易的:将
func()
放入一个单独的程序中,该程序接受要处理的数据并执行以下操作:这将为每个CPU核心运行一个
my.py
,如果func()
的计算成本很高,这通常是您想要的它不会教您如何用Python进行并行编程,但它通常会更快地完成工作,因为您不必调试Python中的并行化部分。相反,您可以专注于编写一个简单的单线程程序,它对一个数据块做正确的事情
相关问题 更多 >
编程相关推荐