帮助我加速这段代码-Python

帮助我加速这段代码-Python,python,algorithm,dictionary,performance,readlines,Python,Algorithm,Dictionary,Performance,Readlines,伙计们,我正在写这个程序,它会浏览推特列表并返回使用最多的单词 我想让它更快,但我想知道你是否可以帮助指出一些问题或领域,我可以提高速度。 谢谢 请参阅下面的代码 wordCount()可以并行运行。由于每条tweet并不直接依赖于另一条tweet,因此没有理由连续迭代列表。将tweet列表拆分为较小的列表,然后在每个子列表上设置一个线程。一旦它们都完成了子词典的创建,您就可以做一些工作将它们合并到一个词典中 编辑: 如何并行求和列表的示例。您可以更改线程主体以执行任何任务 from threa

伙计们,我正在写这个程序,它会浏览推特列表并返回使用最多的单词

我想让它更快,但我想知道你是否可以帮助指出一些问题或领域,我可以提高速度。 谢谢

请参阅下面的代码
wordCount()
可以并行运行。由于每条tweet并不直接依赖于另一条tweet,因此没有理由连续迭代列表。将tweet列表拆分为较小的列表,然后在每个子列表上设置一个线程。一旦它们都完成了子词典的创建,您就可以做一些工作将它们合并到一个词典中

编辑:
如何并行求和列表的示例。您可以更改线程主体以执行任何任务

from threading import Thread

numbers = range(1000)

class Sum(Thread):
  def __init__(self, numList):
    Thread.__init__(self)
    self.numList = numList
    self.total = 0

  def run(self):
    for num in self.numList:
      self.total += num

numThreads = 7
threads = []
perThread = len(numbers)/numThreads
for i in xrange(numThreads):
  start = i*perThread
  t = Sum(numbers[start:len(numbers) if i == numThreads-1 else start+perThread])
  t.start()
  threads.append(t)

grandTotal = 0
for t in threads:
  t.join()
  grandTotal += t.total

print grandTotal
可以写成

if rawline:
决不能使用
len(rawline)-1
作为索引,只要使用
rawline[-1]

我不知道为什么要使用
re.split()
,而您只需执行
linestip.lower().split('\t')

不要使用
dailyMsg.has_键(日期)
,在dailyMsg中使用
date

当您在tweetsByDay上迭代时,您确实应该这样做:

for date, value in tweetsByDay.items():`
这样,您就不必手动将值绑定到键


这只是一个开始。还有很多问题需要解决。我认为您真的需要努力掌握Python——从阅读代码中可以清楚地看出,Python不是您的第一语言,或者您从一个没有教您如何编写好它的资源中学到了东西。例如,为什么在条件句周围加括号?这在Python中是不必要的(尽管它是类似Algol语言(如C或Java)的产物)。为什么使用
dict()
而不是
{}
?最好用第二种方法写一篇空的口述。您可能会发现有帮助。

这段代码充满了未优化的代码片段

例如,函数的每次调用都需要时间。不要做一些无用的函数调用,这样你会有空闲时间。 一些调用可以替换为理解列表:hashtag、httpTag等等

我可以帮助优化,但是:

1-我目前没有足够的时间做这种长时间的工作

2-我们无法优化,因为代码不完整:以下函数调用在哪里?:

readTweets
writeWordFile
dailyMessages
dailyWord
wordCount
searchForMemes
isMeme
dayUserCount
hashtag
httpTag
reply
reTweet
writeToFile
f2count
3-我厌倦了回答新登记的人,他们带着沉重的问题出现在stackoverflow,然后消失了,有时没有任何消息或评论。如果你不想这样做,请原谅

编辑 写文件

F2计数


显然必须从列表中删除。

用户说了什么?您刚才在这里转储了267行代码。哪个部分存在性能问题?您分析过它了吗?返回到修订版,因为已经发布了与之相关的答案。这个问题最好在codereview.stackexchange.com上问。非常感谢!!是的,我是一个新手,我想学习如何编码,这就是我寻求帮助的原因!如果(原始线[-1]!=“\\”):索引器错误:字符串索引超出范围,则收到此错误,我感谢您的评论和反馈range@Samsoni可能是因为字符串是空的。谢谢,我该怎么做?我是python新手,这个程序可以扫描小于300mb的文件,但如果超过300mb,这个程序需要几年的时间。重新查看代码。count和writeToFile不在任何地方调用,如果我决定使用它们,这些是可选的方法。谢谢你的反馈。我是新来的,希望从反馈和反馈中了解更多comments@Samsoni对于f2count和writeToFile,Runga是OK的,把它们放在列表中是愚蠢的。但是其他的呢?“看代码”看什么?
for date, value in tweetsByDay.items():`
readTweets
writeWordFile
dailyMessages
dailyWord
wordCount
searchForMemes
isMeme
dayUserCount
hashtag
httpTag
reply
reTweet
writeToFile
f2count