python 读取文件速度变慢是什么原因

极度视界

来自: 极度视界(Are You Ready?)
2013-10-04 17:08:31

×
加入小组后即可参加投票
  • 红魔鬼

    红魔鬼 2013-10-04 17:22:32

    每个文件处理完, 是否有关闭?

  • 极度视界

    极度视界 (Are You Ready?) 楼主 2013-10-04 18:27:58

    没有关闭 for : fobj = open() ..... 这种形式调用的 应该不是 没有关闭的原因吧

  • Troy

    Troy 2013-10-04 18:33:56

    没有关闭 for : fobj = open() ..... 这种形式调用的 应该不是 没有关闭的原因 没有关闭 for : fobj = open() ..... 这种形式调用的 应该不是 没有关闭的原因吧 ... 极度视界

    要关闭,释放之前占用的资源,否则会造成io负担。

  • 极度视界

    极度视界 (Are You Ready?) 楼主 2013-10-04 19:19:25

    要关闭,释放之前占用的资源,否则会造成io负担。 要关闭,释放之前占用的资源,否则会造成io负担。 Troy

    试了下 不是这个问题 见修改

  • Troy

    Troy 2013-10-04 19:25:15

    试了下 不是这个问题 见修改 试了下 不是这个问题 见修改 极度视界

    本身就需要在迭代中释放占用的资源,做业务要职责单一,处理文件还要做其它的业务,那还要队列做什么。 建议分开做。

  • 雜花生樹

    雜花生樹 2013-10-04 20:03:07

    文件句柄要关闭 if word in all_words.keys(): all_words[word] += 1 else: all_words[word] = 0 这个改成setdeault的方式

  • colaghost

    colaghost (我是一只小小鱼) 2013-10-04 21:21:31

    if word in all_words.keys(): 将这个改为all_words.has_key(word)看看?

  • 极度视界

    极度视界 (Are You Ready?) 楼主 2013-10-04 21:48:20

    if word in all_words.keys(): 将这个改为all_words.has_key(word)看看? if word in all_words.keys(): 将这个改为all_words.has_key(word)看看? colaghost

    大神 解决啦 二者的查找策略 不同?!

  • 极度视界

    极度视界 (Are You Ready?) 楼主 2013-10-04 21:50:48

    if word in all_words.keys(): 将这个改为all_words.has_key(word)看看? if word in all_words.keys(): 将这个改为all_words.has_key(word)看看? colaghost

    是不是 all_words.keys()有一个提取key过程,然后当key很多时候,就巨慢了?

  • /name-?P=0"/卓

    /name-?P=0"/卓 2013-10-05 11:34:16

    要关闭,释放之前占用的资源,否则会造成io负担。 要关闭,释放之前占用的资源,否则会造成io负担。 Troy

    我记得不用关闭的,gc会自动判断并回收的 话说怎么都没有人用with语句?

  • 极度视界

    极度视界 (Are You Ready?) 楼主 2013-10-05 12:28:06

    问题 已解决 感谢大家

  • colaghost

    colaghost (我是一只小小鱼) 2013-10-05 12:45:31

    大神 解决啦 二者的查找策略 不同?! 大神 解决啦 二者的查找策略 不同?! 极度视界

    keys()会返回所有key的列表,所以一多的话就可能会慢,但是has_key就基本上O(1)了

  • 老袁

    老袁 (过敏性鼻炎小组组长) 2013-10-05 13:04:09

    就是all_words越来越大,然后又错误的把所有的key读出来。 直接 if word in all_words 就可以,dictionary用in就是查key。当然最好用get方法,一行顶你4行 all_words[word] = all_words.get(word, 0) + 1

  • 老袁

    老袁 (过敏性鼻炎小组组长) 2013-10-05 13:04:37

    LZ你记词频为毛第一次记个0不是记个1捏。。。。

  • 极度视界

    极度视界 (Are You Ready?) 楼主 2013-10-05 13:06:19

    就是all_words越来越大,然后又错误的把所有的key读出来。 直接 if word in all_words 就可以, 就是all_words越来越大,然后又错误的把所有的key读出来。 直接 if word in all_words 就可以,dictionary用in就是查key。当然最好用get方法,一行顶你4行 all_words[word] = all_words.get(word, 0) + 1 ... 老袁

    刚用Python 不久,多谢大家指点。

  • 蒲公英

    蒲公英 2014-12-23 15:59:36

    大神 解决啦 二者的查找策略 不同?! 大神 解决啦 二者的查找策略 不同?! 极度视界

    [内容不可见]

  • asdass

    asdass 2016-02-23 21:56:41

    大神,请问用你的方法预处理得到train_data能直接用于perceptron吗?

你的回应

回应请先 , 或 注册

114291 人聚集在这个小组
↑回顶部