我必须承认,我在计算机科学领域学识渊博,因此很难理解python中的并行处理。就我网上冲浪而言,有两种情况:
1-数据将无法容纳在内存中,因此数据将分为多个块,几个块(无论什么适合内存),加载到内存中,将它们进行处理并写回到磁盘。然后加载其他块,直到将处理整个数据并将其写入磁盘。
2-数据将适合内存,但是由于python的GIL功能,所有处理将在单个内核上完成,这需要很长时间。因此,并行处理会将数据划分为多个块,并在单个内核上处理每个成对的块。 我的困惑是,假设我提到的场景是正确的,所以
1-当我们混合使用1和2场景时发生了什么。
2-每个内核都使用一定数量的内存吗?
3-无论我们是使用多处理类来定义工作程序并将工作分配给工作程序,还是使用一些在后端处理工作和工作程序的库(例如Dask),该划分如何完成?如果在两个数据帧之间各有几百万行,则有一个连接命令,这些数据帧中的大块内存中是否有待处理的数据,可能不包含正确的连接数据,因此会丢失某些连接? / p>
4-在按数据分组的滚动窗口计算中,如果一组数据分布在多个块上,数据将如何分配?
所以我想我的问题甚至很复杂。因此,任何澄清绝对会让我高兴。