首页 > 解决方案 > 为什么进程在多处理中需要不同的时间来执行?

问题描述

我正在运行一个使用多处理处理 3 laks 行数据帧的程序。我使用在 python 中使用 multiprocess.process 创建的 62 个进程在 64 个核心 VM 上执行此操作。每个进程输入 4900 行。

奇怪的是,过程需要不同的时间来完成。第一个进程在 15 分钟内完成了任务,而最后一个进程花费了 70 多分钟。下面是我使用的多处理代码块。

import multiprocessing

# define dataframe here
data_thread = data
uid = "final"   ### make sure to change uid

batch_size = 4900
counter = 0
datalen = len(data_thread)
Flag = True
processes = []

while(Flag):
    start = counter*batch_size
    end = min(datalen, start+batch_size)
    if end>=datalen:
        Flag = False

    indices.append((start, end))
    data_split = data_thread.iloc[start:end]
    threadName = "process_"+str(counter)
    processes.append(multiprocessing.Process(target=process, args = (data_split, uid, threadName, start, end, )))
    counter = counter+1

startCount = 0
while(startCount<len(processes)):
    t = processes[startCount]
    try:
        t.start()
    except:
        print("Error encountered while starting the process_%lf: %s"%(startCount, str(indices[startCount])))
    print("Started: process_" + str(startCount))
    startCount = startCount + 1

endCount = 0
while(endCount<len(processes)):
    t = processes[endCount]
    t.join()
    print("Joined: process_" + str(endCount))
    endCount = endCount + 1

标签: python-3.xpython-2.7multiprocessing

解决方案


推荐阅读