python中的多处理大数据集
Posted
技术标签:
【中文标题】python中的多处理大数据集【英文标题】:Multiprocessing Big Datasets in python 【发布时间】:2019-02-18 10:41:02 【问题描述】:我是 python 中的多处理新手,想知道是否可以为我的数据分析执行此操作。
代码:
file1=open('./R.csv','r').readlines()
file2=open('./N.csv','r').readlines()
定义字典:
Dict1=
Dict2=
将 file1 的第一列存储为字典元素:
for k1 in range(0,len(file1)):
d1=file2[k1].split(',')[0]
Dict1[k1]=d1
#print(Dict1[1])
将 file2 的第一列存储为字典元素:
for k2 in range(0,len(file2)):
d2=file2[k2].split(',')[0]
Dict2[k2]=d2
#print(new_Dict[0])
逐行检查Dict1中的元素是否与Dict2相同,如果是,则打印file1和file2中的匹配行:
for i in range(0,len(file1)):
for j in range(0,len(file2)):
if Dict1[i] in Dict2[j]:
print(Dict1[i]+","+file1[i].split(',')[1].strip()+","+file2[j].split(',')[1].strip())
此代码有效,但完成这项工作需要很长时间,因为这两个文件都是一个巨大的数据集。我想在服务器的工作站上使用所有 64 个 CPU 集群。但是不知道怎么...
我尝试点击下面的这些链接,但不知何故卡住了。
https://***.com/questions/914821/producer-consumer-problem-with-python-multiprocessing
https://www.youtube.com/watch?v=sp7EhjLkFY4
https://www.youtube.com/watch?v=aysceqdGFw8
非常感谢任何帮助。
非常感谢。干杯。
【问题讨论】:
欢迎来到 SO。恕我直言,我怀疑您开始的方法是否适合您尝试完成的任务。你正在“手工”做很多事情,这些任务有图书馆,更适合。我什至不认为dict
s 是您真正想要/需要的数据类型 - 您的键只是代表文件行号计数的整数......这些值是每行的列条目的列表.. .我认为你应该看看numpy.genfromtxt()
或pandas.read_table()
或类似的东西......
首先:你到底想做什么?加载两个文件的内容并检查第一个文件的所有行是否都包含在第二个文件中,不知道两个文件中第行的顺序...?
您好 SpghttCd,非常感谢您的回复。我正在尝试读取并检查 file1 的内容(第 1 列)是否存在于 file2 第 2 列中,而不管第二个文件中的顺序如何。
好的,每个文件有多少行?
您好 SpghttCd,非常感谢您的回复。我正在尝试读取并检查 file1 的内容(第 1 列)是否存在于 file2 第 2 列中,而不管第二个文件中的顺序如何,并打印结果。我已经使用嵌套的 for 循环完成了这项工作。这段代码完美无缺,除了我试图查看是否有更快的方法来同时使用多处理和打印来处理文件中多行的条件检查......即试图更快地完成工作......我对任何建议都很感兴趣。非常感谢。
【参考方案1】:
我首先会使用 pandas 进行测试:
import pandas as pd
df_r = pd.read_table('./R.csv', header=None) # check if standard delimiter ',' works...
df_n = pd.read_table('./N.csv', header=None) # ... otherwise add e.g. sep='\s+,\s+'
print(df_r[df_r[0].isin(df_n[1])])
也许这是一种已经适合你的方法。
【讨论】:
下面的链接很有用。 ***.com/questions/48130929/…以上是关于python中的多处理大数据集的主要内容,如果未能解决你的问题,请参考以下文章