您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python线程和性能?

5b51 2022/1/14 8:21:38 python 字数 2606 阅读 531 来源 www.jb51.cc/python

我不得不做大量的I / O绑定操作,即解析大文件并从一种格式转换为其他格式.最初我曾经连续做过,即一个接一个地解析..!性能非常差(使用时间为90秒).所以我决定使用线程来提高性能.我为每个文件创建了一个线程. (4个主题) for file in file_list: t=threading.Thread(target = self

概述

我不得不做大量的I / O绑定操作,即解析大文件并从一种格式转换为其他格式.最初我曾经连续做过,即一个一个地解析..!性能非常差(使用时间为90秒).所以我决定使用线程来提高性能.我为每个文件创建了一个线程. (4个主题)

 for file in file_list:
            t=threading.Thread(target = self.convertfile,args = file)
            t.start()
            ts.append(t)
 for t in ts:
            t.join()

但令我惊讶的是,没有任何性能提升.现在也需要大约90秒才能完成任务.由于这是I / O绑定操作,我原本期望提高性能.

multiprocessing模块可以帮助你. (请注意,它是在Python 2.6中引入的,但Python 2.5存在后向端口.)

正如MSalters所说,如果你的程序受I / O限制,那么这是否有用是值得商榷的.但它可能值得一试:)

要使用此模块实现您想要的目标:

import multiprocessing

MAX_PARALLEL_TASKS = 8 # I have an Intel Core i7 :)

pool = multiprocessing.Pool(MAX_PARALLEL_TASKS)

pool.map_async(convertfile,filelist)

pool.close()
pool.join()

重要!传递给map_async的函数必须是pickleable.通常,实例方法不是pickleable,除非你设计它们!请注意,上面的convertfile是一个函数.

如果你确实需要从convertfile中获取结果,那么也有办法做到这一点.多处理文档页面上的示例应该澄清.

总结

以上是编程之家为你收集整理的python线程和性能?全部内容,希望文章能够帮你解决python线程和性能?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶