Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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:Odd";pnc=:N";错误消息_Python - Fatal编程技术网

Python:Odd";pnc=:N";错误消息

Python:Odd";pnc=:N";错误消息,python,Python,我在一个特别大的输入集上运行Python算法,将得到的LCS长度存储在一个二维numpy数组中。我注意到,随着时间的推移,它正在减速;大约三分之一的过程中,它减速爬行,然后崩溃,打印神秘的错误消息“pnc=:N”,之后没有换行符(我的程序在停止之前再打印一行输出)。此时,它似乎也释放了大量已分配的内存。有人知道这意味着什么吗 编辑:崩溃的代码部分是: #m and n are both around 12,000 lengths = np.empty((m+1, n+1), dtype=np.u

我在一个特别大的输入集上运行Python算法,将得到的LCS长度存储在一个二维numpy数组中。我注意到,随着时间的推移,它正在减速;大约三分之一的过程中,它减速爬行,然后崩溃,打印神秘的错误消息“pnc=:N”,之后没有换行符(我的程序在停止之前再打印一行输出)。此时,它似乎也释放了大量已分配的内存。有人知道这意味着什么吗

编辑:崩溃的代码部分是:

#m and n are both around 12,000
lengths = np.empty((m+1, n+1), dtype=np.uint)
lengths[0,:] = 0
lengths[1:,0] = 0

if m > 0 and n > 0:
    for i in xrange(1, m + 1):
        for j in xrange(1, n + 1):
            #eqTest is a function comparing two sequence elements, like cmp
            eq = eqTest(a[i-1], b[j-1])
            if eq:
                lengths[i,j] = lengths[i-1,j-1] + 1
            elif lengths[i-1,j] >= lengths[i,j-1]:
                lengths[i,j] = lengths[i-1,j]
            else:
                lengths[i,j] = lengths[i,j-1]
我不确定是什么原因导致它随着时间的推移变慢或使用更多的资源,因为整个LCS长度数组在开始时分配,然后填充。我使用的平等性测试很难描述,因为它部分是用C编写的,但它实际上是:

def eqTest(l1, l2):
    words1 = l1.split()
    words2 = l2.split()
    if len(words1) == len(words2):
        for i in xrange(len(words1)):
            #MATCHERS is a list of around 10 compiled regular expressions
            for m in MATCHERS:
                if m.match(s1) is not None and m.match(s2) is not None:
                    break
            else:
                result = False
                break
        else:
            result = True
    else:
        result = False
return result
如果“then crash”是指程序终止,那么“此时它似乎也释放了大量分配的内存”。这是操作系统回收分配给进程的内存的一种效果

根据您的描述,原因可能是您的程序超出了操作系统对进程大小的限制(这至少会导致Linux崩溃)


至于其他方面,查看您的代码会有所帮助。你应该经常发布你的代码。

我的代码有几千行,但我添加了我认为是相关的部分。顺便说一下,我用的是Windows7。在检查我的系统监视器时,很明显我的程序正在泄漏内存,大概是在C代码中。我对错误消息非常好奇。你能帮我解包吗?@dpitch40这不是标准的python错误。我不知道你在用什么第三方模块。尝试将您的源代码和您正在使用的其他模块的源代码进行灰显,以查看是否出现任何问题。