使用多重处理从数据帧写入csv而不弄乱输出

时间:2018-12-27 20:07:08

标签: python multithreading csv multiprocessing

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    if cell.detailTextLabel == ukPremiumLabel {
        ukPremiumLabel.backgroundColor = .blue
    }
}

我得到一个csv文件作为输出,其中有些行被弄乱了,因为python同时在写来自不同线程的一些代码。我想我需要使用队列,但是我无法修改代码以使其正常工作。想法该怎么做?否则要花很多时间才能得到结果。

1 个答案:

答案 0 :(得分:0)

那解决了这个问题(游泳池由您代管)

Python: Writing to a single file with queue while using multiprocessing Pool

我的代码版本没有弄乱输出的csv文件:

import numpy as np
import pandas as pd
from multiprocessing import Pool
import threading

#Load the data
df = pd.read_csv('crsp_short.csv', low_memory=False)

def funk(date):
    ...
    # for each date in df.date.unique() do stuff which gives sample dataframe
    # as an output

    return sample

# list_s is a list of dates I want to calculate function funk for   

def mp_handler():
# 28 is a number of processes I want to run
    p = multiprocessing.Pool(28)
    for result in p.imap(funk, list_s):
        result.to_csv('crsp_full.csv', mode='a')


if __name__=='__main__':
    mp_handler()