특히 크게 입력 집합에 Python longest common subsequence 알고리즘을 실행하여 결과 LCS 길이를 2 차원 numpy 배열로 저장했습니다. 시간이 지남에 따라 속도가 느려지고있는 것으로 나타났습니다. 3 분의 1 정도가되면 크롤링 속도가 느려지고 추락하여 수수께끼의 오류 메시지 인 "pnc = : N"을 출력하고 이후에는 개행하지 않습니다 (내 프로그램은 출력 전에 한 줄 더 출력을 중단했습니다). 또한이 시점에서 많은 양의 할당 된 메모리를 릴리스하는 것으로 나타났습니다. 누구든지 이것이 무엇을 의미하는지 알 수 있습니까?Python : Odd "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
내 코드는 수천 줄이지만, 필자는 상대적 부분이라고 생각하는 부분을 추가했습니다. 나는 Windows 7을 사용하고 있습니다. 내 시스템 모니터를 확인하면 내 프로그램이 아마도 C 코드에서 메모리를 누설하고 있다는 것이 확실합니다. 나는 대부분이 오류 메시지에 대해 궁금해했다. 저를 위해 그것을 풀 수 있습니까? – dpitch40
@ dpitch40 표준 파이썬 오류가 아닙니다. 어떤 제 3 자 모듈을 사용하고 있는지 모르겠습니다. 소스 코드를 grepping하고 사용중인 다른 모듈의 소스를 확인해보십시오. – Marcin