Python论坛  - 讨论区

标题:[python-chinese] 性能提高问题,从一两百万个文件中过滤出有几十万个特定ID的行

2007年01月23日 星期二 20:53

yemin yemin001在gmail.com
星期二 一月 23 20:53:13 HKT 2007

¶àлÄãÃǵĽ¨Òé¡£

ÒòΪÕâЩÎļþ·ÅÔÚÊ®¼¸¸öĿ¼Ï£¬Ã¿¸öĿ¼µÄÎļþÊý²î²»¶à£¬Æô¶¯Ê®¼¸¸ö½ø³Ì´¦Àíÿ¸öĿ¼µÄÎļþ¡£
¾­ÏÈÇ°µÄ²âÊÔÍÆË㣬»¨·Ñʱ¼äÄܹ»¿ØÖÆÔÚ¹¤³Ì½ø¶Èʱ¼ä·¶Î§ÄÚ¡£


yemin

ͬÒ⣬һЩunixÏµĹ¤¾ß¶ÔÓÚÎı¾´¦ÀíÓм«¸ßµÄЧÂÊ¡£¶øÇÒÂ¥Ö÷µÄ´¦ÀíÁ¿²»Ð¡£¬ÎÒ¾õµÃÓ¦¸ÃÉè¼ÆÒ»¸ö²¢·¢µÄËã·¨¡£Ò²²»ÄÑ£¬¾ÍÊÇÒ»¸öÎļþ¸øÒ»¸öÏß³ÌÈ¥×ö£¬¹²ÏíÄǸö´æ·ÅIDµÄ¼¯ºÏ¡£ÁíÍ⣬¥Ö÷ÊÇÓÃ×ÖµäÀ´´æidµÄ£¬Èç¹ûidÊÇÊý×ֵĻ°£¬ÓÐûÓÐÊÔ¹ýÓÃÁбí´æ£¬ÅÅÐòÈ»ºóÓöþ·Ö²éÕÒÊDz»ÊÇÄÜ¿ìµã£¿


On 1/23/07, Zoom. Quiet <zoom.quiet在gmail.com> wrote:
On 1/23/07, amingsc < amingsc在gmail.com> wrote:
> ÓÃf.xreadlines¿ÉÄÜÐÔÄܸü¸ßһЩ,¶ÔÓÚÕâÖÖÊý¾ÝºÜ´óµÄÇé¿ö
>
ÐÔÄÜ·½Ãæ¾Í²»ÒªÔÚPython Õâ±ß¶ùÕÒ·½·¨ÁË£¬
Ö±½ÓʹÓà find ÃüÁîÒª¸ßЧµÄ¶à£¬

¿ÉÒÔʹÓÃPython À´¸¨ÖúÉú³ÉÃüÁֱ½ÓÀûÓÃϵͳ¹¤¾ßÀ´½øÐйýÂË£¬
ÕâÑù¿ª·¢ºÍÖ´ÐÐЧÂʶ¼¿ÉÒÔ±£Ö¤ÁË 

> tocer дµÀ:
> > ½¨ÒéÏÈÓà hotshot Ä£¿é¿´¿´Æ¿¾±ÔÚÄÄÀï¡£
> >
> > ÁíÍ⣬Èç¹û²»Óà mmap£¬Ö±½ÓʹÓà f.readlines() °ÑÎļþÄÚÈݶÁµ½ÄÚ´æÖУ¬ÕâÑù¾Í²»ÓÃÅжÏ
> > ÊDz»ÊÇ×îºóÒ»ÐÐÁË£¬Ê¡ÁËÅжϵÄʱ¼ä£¬ÊDz»ÊÇ»á¿ìµã£¬»¹ÊDz¶à£¿
> >
> > yemin wrote::
> >
> >>  ´ÓÒ»Á½°ÙÍò¸öÎļþÖйýÂ˳ö¼¸Ê®Íò¸öÌض¨IDµÄÐÐ,
> >>  Ï£ÍûÄÜÌá¸ß²Ù×÷Ëٶȣ¬¸÷λÓк÷½·¨Âð£¿
> >>
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070123/9fc4ff7c/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年01月24日 星期三 12:35

shirj shirj在livedoor.cn
星期三 一月 24 12:35:58 HKT 2007

一般来讲,需要建立索引,或者为索引再建立索引,然后优化算法
如果对一个不太优良的数据结构进行多线程查找,效率不能提高很多
而且会有很多负面麻烦

参考下lucence的实现,好像是这么写,apache的项目
good luck


yemin wrote:
> 多谢你们的建议。
>  
> 因为这些文件放在十几个目录下,每个目录的文件数差不多,启动十几个进程处理 
> 每个目录的文件。
> 经先前的测试推算,花费时间能够控制在工程进度时间范围内。
>  
>  
> yemin
>  
> 
>     同意,一些unix下的工具对于文本处理有极高的效率。而且楼主的处理量不
>     小,我觉得应该设计一个并发的算法。也不难,就是一个文件给一个线程去
>     做,共享那个存放ID的集合。另外,楼主是用字典来存id的,如果id是数字的
>     话,有没有试过用列表存,排序然后用二分查找是不是能快点?
> 
>     On 1/23/07, *Zoom. Quiet *<zoom.quiet在gmail.com
>     zoom.quiet在gmail.com>> wrote:
> 
>         On 1/23/07, amingsc < amingsc在gmail.com
>         amingsc在gmail.com>> wrote:
>          > 用f.xreadlines可能性能更高一些,对于这种数据很大的情况
>          >
>         性能方面就不要在Python 这边儿找方法了,
>         直接使用 find 命令要高效的多,
> 
>         可以使用Python 来辅助生成命令,直接利用系统工具来进行过滤,
>         这样开发和执行效率都可以保证了
> 
>          > tocer 写道:
>          > > 建议先用 hotshot 模块看看瓶颈在哪里。
>          > >
>          > > 另外,如果不用 mmap,直接使用 f.readlines() 把文件内容读到
>         内存中,这样就不用判断
>          > > 是不是最后一行了,省了判断的时间,是不是会快点,还是差不多?
>          > >
>          > > yemin wrote::
>          > >
>          > >>  从一两百万个文件中过滤出几十万个特定ID的行,
>          > >>  希望能提高操作速度,各位有好方法吗?
>          > >>
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号