我需要以下代碼才能在沒有線程或多處理的情況下更快完成。如果有人知道任何技巧,將不勝感激。也許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