假设您有两个列表,第一个由 700 个单词组成,第二个由 30.000 个可能的句子开头组成。 将有 21.000.000 种句子开头和单词的组合。

此外,大约有 400 个文件,每个可能的句子 + 单词组合都有一些结果。 每个文件由 170.000.000 行组成,结构如下:

this is the first sentence
    1. result for that sentence
    2. result for that sentence
    ...
    nth result for that sentence

this is the second sentence
    ...

this is the nth sentence
    ...

对于每个可能的句子+单词组合,我想找到包含有关组合的一些信息的结果文件(对于每个组合,只有一个出现组合的结果文件)并读出结果。 您可以在 for 循环中执行此操作:

all_results = []

#create combinations
for sentence in sentencelist:
    for word in wordlist:
        combo = str(sentence + ' ' + word)

        #loop through results file while no result for combination has bin found
        c_result = []
        while not c_result:
            for resultsfilename in os.listdir(resultsdirectory):
                with open(resultsfilename, 'r') as infile:
                    results = infile.read().splitlines()
                if combo in results:
                    c_result = function_to_find_pattern_based_on_continuation(continuation, results)

        #append results and reset c_result
        all_results.append(c_result)
        c_result = []

然而,这个算法的运行时间很长,我想知道如何改进它。 例如,我想知道如何防止一遍又一遍地加载结果文件。 此外,我想创建一个结果文件的副本,在从结果文件中读出句子+单词组合的结果后,可以在副本中删除它们(我不想更改驾驶)。 然而,每个结果文件大约有 7GB 大,所以将每个文件存储在一个变量中是没有意义的,对吧?

还有其他一些东西可以用来改善运行时吗?

Edit1:调整列表的大小 Edit2:在代码中添加while循环和注释

#1楼 票数:1 已采纳

据我了解,您在这里有两个问题。

  1. 您需要一些方法来减少几个大文件的 I/O。
  2. 您需要一种方法来修改/复制其中一些大文件

我认为有几种方法可以解决这些问题。 首先,如果可能的话,我会使用像 sqlite 这样的数据库 - 这将消除您的大量文件打开/关闭问题。

其次,您可以在 for 循环中使用 python 的yield运算符(将其放在自己的函数中),然后将其作为生成器进行迭代,并在进行时像流一样对其进行编辑。 这将允许您存储结果(例如在文件中),而无需将它们全部放入一个列表中,该列表会很快耗尽内存。

  ask by hyhno01 translate from so

未解决问题?本站智能推荐:

1回复

如何减少代码的运行时间?

我可以对这段代码进行任何修改以使其运行得更快吗? 我的代码目前正在运行,但需要 10 个小时以上才能抓取所有 50,000 个配置文件。 请让我知道我可以做些什么来减少运行时间。 谢谢!
2回复

改进函数运行时间

我创建了一个获取数据结构并将其所有元组替换为列表的函数。 例如: 这是功能: 这个函数将在 RDD 的数百万行上运行,所以我想尽可能地改进它。 有没有办法像开箱即用的功能一样改善运行时间,我可以用它来使它更好? 谢谢
1回复

python的运行时间

嗨,我正在尝试估算numpy的fft代码的运行时间。 使用不同的输入长度N。以下是我的代码。 这是我得到的结果,输入长度N = 3的第一行应该是最快的,但是无论我运行多少次,第一行始终是最大的。 我想这是计时器的问题,但是我不知道其确切原因。 有人可以向我解释吗? 输出:
1回复

运行时间超长

我有以下代码: 我只希望它从函数SNR2中获取52500个值的列表,并检查它们是否大于给定的阈值。 当我只运行SNR2(Mchirp,dl)时,大约需要3秒钟才能运行。 但是,当我运行我的trig_decision函数时,它会花费很多时间。 是否有发生这种情况的原因以及解决该问题的
1回复

如何查看运行时间?

有什么方法可以精确计时我的 Python 代码,最好使用内置模块? 虽然算法高效排序的代名词,有时,增加一个单个数字到输入使得供不可思议较慢的运行的代码。 一个人不能坐等那段时间。
2回复

优化匹配算法运行时

最近有一个朋友要求我编写一个算法,该算法采用n个“人”并产生n-1 x n / 2的网格,其中每个可能的对出现一次,并且在每个n / 2部分中不允许两次出现。 (即,与人2匹配的人员1和与人3匹配的人员1无效)。 如果这没有任何意义,请想象一下:100人创建99轮会议,每个人在每一轮中都
1回复

此特定算法的运行时间是多少?

我认为这个特定的代码是(log n)^ 2,因为每个findindex函数的取值均为logn深度,因此我们称其为logn次? 有人可以确认吗? 我希望你们中的一个可以将其视为一个小测验并帮助我。 给定一个n个整数的排序数组,该数组已旋转了未知次数,请编写代码以在数组中查找元素。
1回复

什么是 Big-O 和确切的运行时间

我并没有真正了解这段代码的 Big-O 和确切的运行时间。 我首先认为 Big-O 是 O(n^3) * logn 因为 n**3 但 n * 3 让我感到困惑。 有人可以解释这个问题吗? 谢谢。