使用多个线程遍历数据帧

时间:2018-07-28 22:21:04

标签: python multithreading pandas iteration

我对数据帧my_method()的每一行执行方法df

results = []
for index, row in df.iterrows():
    result = my_method(row)

my_method函数翻译该行中的文本,并将翻译添加到该行中。

我想使速度更快,并运行多个线程以在行上执行该方法。顺序无关紧要,结果将累积在results数组中

这是我通常的操作方式:

#divide dataframe to number of threads and execute threads for each portion
def initThreads(numOfThreads, df):
    dfSize = len(df)
    bulkSize = dfSize // numOfThreads
    lastSize = dfSize % numOfThreads
    currentIndex = 0
    for i in range(0, numOfThreads):
        t = threading.Thread(target=my_method, args=(df[currentIndex:currentIndex+bulkSize],))
        threads.append(t)
        t.start()
        currentIndex += bulkSize
    t = threading.Thread(target=translate, args=(df[currentIndex:currentIndex+lastSize],))#complete last bulk

此方法似乎并不干净。有没有更合适的方法呢?

0 个答案:

没有答案