<p>正如其他人所说的那样,分析一下你的代码,看看它为什么慢。<code>cProfile</code>模块<a href="https://stackoverflow.com/a/843725/745">in conjunction with the ^{<cd2>} tool</a>可以生成可读性很好的信息</p>
<p>在看不到您的慢代码的情况下,我可以猜测一些可能有帮助的事情:</p>
<p>首先,您可能可以使用内置字符串方法而不是正则表达式,这可能会更快一些。如果需要使用regex,那么值得在主循环之外使用<a href="http://docs.python.org/2/library/re.html#re.compile" rel="nofollow noreferrer">^{<cd3>}</a>进行预编译</p>
<p>第二种方法是不要每行执行一次插入查询,而是成批进行插入,例如将解析后的信息添加到列表中,当信息达到一定大小时,用<a href="http://docs.python.org/2/library/sqlite3.html#sqlite3.Cursor.executemany" rel="nofollow noreferrer">^{<cd4>}</a>方法执行一次插入查询。在</p>
<p>一些不完整的代码,例如:</p>
<pre><code>import fileinput
parsed_info = []
for linenum, line in enumerate(fileinput.input()):
if not line.startswith("#DEBUG"):
continue # Skip line
msg = line.partition("MSG")[1] # Get everything after MSG
words = msg.split() # Split on words
info = {}
for w in words:
k, _, v = w.partition(":") # Split each word on first :
info[k] = v
parsed_info.append(info)
if linenum % 10000 == 0: # Or maybe if len(parsed_info) > 500:
# Insert everything in parsed_info to database
...
parsed_info = [] # Clear
</code></pre>