Pycharm文件读取程序在调试模式下工作,但在发布模式下失败?

时间:2020-01-14 18:29:38

标签: python pycharm

我编写了一个脚本,该脚本将从文本文件中读取值到字典对象my_dict中。我有两个文件,一个是35mb,另一个是4.1Gb。在我的系统上,我有8GB的内存和32GB的交换文件。

文件看起来像这样:

dict_key_a 1,2,3,4,5,6 ...

dict_key_b 7,8,9,1,2,3 ...

...

这是我用来将其转换为字典的功能:

import os
import time

def unpack_dictionary(directory, verbose=False):
    start_time = time.time()
    if verbose:
        print("[Reading data from file {}]".format(directory))
    my_dict  = dict()
    file = open(directory)
    count = 0
    for line in file:
        print(count)
        count = count + 1  #I used this to figure out where it is stopping
        id, data = line.split()
        my_dict[id] = list(map(float, data.split(',')))

    file.close()

    file_size = os.path.getsize(directory)

    if verbose:
        print("[Finished reading {} GB in {} seconds]".format(file_size / 1000000000, round((time.time() - start_time), 3)))
    return my_dict

我在Pycharm工作,该程序始终快速读取第一个35mb文件。但是,当读取较大的4gb文件时,该程序始终冻结在条目4188上。

我尝试使用调试器运行,程序运行正常。但是,这需要20GB的交换文件,这似乎是不必要的。我期望最多8gb(4gb读取文件,而4gb容纳字典)。所有这些额外的内存可以用来做什么?我没有运行任何其他程序...

我可以在HTOP中看到86%的内存分配给了虚拟环境。

当我在虚拟环境中运行该进程时,它只会进入2352...。

Ubuntu 18上的Python 3.6 64位

0 个答案:

没有答案