我有一个非常大的文件(包含 dbSNP ID),包含 100 万行,每行包含一个字符串,另一个更大的文件 (.vcf) 包含 6 亿行,每行包含 7-8 列。
我想在较大的文件中找到较小文件的每一行的第一次出现,使我的程序的蛮力复杂度为 1,000,000 * 600,000,000 次。我想要一种更快、更少内存密集型的方式来执行此操作。我是 python 中的多处理或并行编程的新手,我不确定如何在不使用任何一个的情况下解决这个问题。
numpy
我已经尝试使用和pandas
库对两个文件的较小子集执行类似的操作:
import numpy as np
import pandas as pd
BigFile = pd.Series(arrayOfRowsOfBiggerFile)
SmallFile = pd.Series(arrayOfRowsOfSmallerFile)
FinalList = SmallFile.map(lambda x: np.where(A==x)[0][0]).tolist()
这需要很长时间才能执行,我确信可以使用 python 多处理很好地处理。