Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有数据帧和多参数的Python多处理_Python_Dataframe_Multiprocessing - Fatal编程技术网

具有数据帧和多参数的Python多处理

具有数据帧和多参数的Python多处理,python,dataframe,multiprocessing,Python,Dataframe,Multiprocessing,根据何时应使用具有多个参数的多处理。我遇到的问题是,我的一个参数是一个常量数据帧。当我创建一个供我的函数和星图使用的参数列表时,数据帧会被反复存储。我想我可以用电脑来解决这个问题,但似乎无法解决。我下面的代码没有抛出错误,但30分钟后没有写入任何文件。代码运行不到10分钟,无需使用多处理,只需直接调用write\u file import pandas as pd import numpy as np import multiprocessing as mp def write_file(df

根据何时应使用具有多个参数的多处理。我遇到的问题是,我的一个参数是一个常量数据帧。当我创建一个供我的函数和星图使用的参数列表时,数据帧会被反复存储。我想我可以用电脑来解决这个问题,但似乎无法解决。我下面的代码没有抛出错误,但30分钟后没有写入任何文件。代码运行不到10分钟,无需使用多处理,只需直接调用
write\u file

import pandas as pd
import numpy as np
import multiprocessing as mp

def write_file(df, colIndex, splitter, outpath):
    with open(outpath + splitter + ".txt", 'a') as oFile:
        data = df[df.iloc[:,colIndex] == splitter]
        data.to_csv(oFile, sep = '|', index = False, header = False)

mgr = mp.Manager()
ns = mgr.Namespace()
df = pd.read_table(file_, delimiter = '|', header = None)
ns.df = df.iloc[:,1] = df.iloc[:,1].astype(str)
fileList = list(df.iloc[:, 1].astype('str').unique())
for item in fileList:
    with mp.Pool(processes=3) as pool:
        pool.starmap(write_file, np.array((ns, 1, item, outpath)).tolist())

对于其他与此问题斗争的人,我的解决方案是通过以下方式在数据帧外创建一个长度为chunksize的元组列表:

iterable = product(np.array_split(data, 15), [args])
然后,将此iterable传递到星图:

pool.starmap(func, iterable)

您找到解决方案了吗?请参阅下面的答案