스레드 또는 다중 처리없이 빨리 완료하려면 다음 코드가 필요합니다. 누군가가 중대하게 평가 될 어떤 트릭을 알고 있다면. 어쩌면 for i in enumerate()
또는 계산하기 전에 문자열을 목록을 변경, 나는 잘 모르겠다.
아래 예제에서는 무작위 시퀀스를 사용하여 변수를 다시 만들려고 시도했지만 루프 내부의 일부 조건이 렌더링되지 않았습니다 ...이 예제에서는 괜찮습니다. 코드는 약간 더 오래 걸립니다. 현재 내 i7에서 아래의 예 (대부분 조건을 무시할 것입니다)가 1 초 만에 완료되므로 가능한 한 많이 얻으려고합니다. ListVar의 단순 복사본을 만듭니다Python, 빨리 완료하려면 다음 코드가 필요합니다.
import random
import time
import collections
import cProfile
def random_string(length=7):
"""Return a random string of given length"""
return "".join([chr(random.randint(65, 90)) for i in range(length)])
LIST_LEN = 18400
original = [[random_string() for i in range(LIST_LEN)] for j in range(6)]
LIST_LEN = 5
SufxList = [random_string() for i in range(LIST_LEN)]
LIST_LEN = 28
TerminateHook = [random_string() for i in range(LIST_LEN)]
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Exclude above from benchmark
ListVar = original[:]
for b in range(len(ListVar)):
for c in range(len(ListVar[b])):
#If its an int ... remove
try:
int(ListVar[b][c].replace(' ', ''))
ListVar[b][c] = ''
except: pass
#if any second sufxList delete
for d in range(len(SufxList)):
if ListVar[b][c].find(SufxList[d]) != -1: ListVar[b][c] = ''
for d in range(len(TerminateHook)):
if ListVar[b][c].find(TerminateHook[d]) != -1: ListVar[b][c] = ''
#remove all '' from list
while '' in ListVar[b]: ListVar[b].remove('')
print(ListVar[b])
(목록에서 즉 찾는 mstrings) : 함께 이러한 제안을 퍼팅
같은 것을 제공합니다. 나는 그것을 위해 swig를 사용한다. 또한 목록 대신 해시가 빠를 수도 있습니다. –
해결하려는 문제를 설명해 주시겠습니까? 코드를 이해하고 더 좋은 방법을 생각해 내기보다는 "X를하는 효율적인 방법은 무엇입니까?"라는 질문에 쉽게 답할 수 있습니다. – thesamet
필터링 프로세스를 통해 목록을 실행하고 싶습니다. – Rhys