我需要以下代码才能在没有线程或多处理的情况下更快完成。如果有人知道任何技巧,将不胜感激。也许for i in enumerate()
或在计算之前将列表更改为字符串,我不确定。
对于下面的例子,我试图用随机序列重新创建变量,但是这已经使循环内部的一些条件无用......对于这个例子来说没问题,它只是意味着'真正'的应用程序代码会稍微延长一点。 目前在我的i7上,下面的示例(其中大部分将绕过其中的一些条件)在1秒内完成,我希望尽可能地降低它。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])
你可以尝试重写代码的某些部分在C(在列表中找到,即mstrings)。我用'swig'。此外,也许哈希,而不是列表将更快 – 2012-01-12 08:47:04
你能解释你想解决什么问题?我们更容易回答“什么是有效的X方法”这个问题,而不是理解你的代码并想出一个更好的方法来实现它。 – thesamet 2012-01-12 08:51:15
我想通过过滤流程运行一个列表 – Rhys 2012-01-12 08:59:31