python线程和性能?
发布时间:2020-12-16 22:32:33 所属栏目:Python 来源:网络整理
导读:我不得不做大量的I / O绑定操作,即解析大文件并从一种格式转换为其他格式.最初我曾经连续做过,即一个接一个地解析..!性能非常差(使用时间为90秒).所以我决定使用线程来提高性能.我为每个文件创建了一个线程. (4个主题) for file in file_list: t=threading.
我不得不做大量的I / O绑定操作,即解析大文件并从一种格式转换为其他格式.最初我曾经连续做过,即一个接一个地解析..!性能非常差(使用时间为90秒).所以我决定使用线程来提高性能.我为每个文件创建了一个线程. (4个主题)
但令我惊讶的是,没有任何性能提升.现在也需要大约90秒才能完成任务.由于这是I / O绑定操作,我原本期望提高性能. 最佳答案
在通常的Python解释器下,由于global interpreter lock(也就是GIL),线程不会为你的程序分配更多的CPU内核.
multiprocessing模块可以帮助你. (请注意,它是在Python 2.6中引入的,但Python 2.5存在后向端口.) 正如MSalters所说,如果你的程序受I / O限制,那么这是否有用是值得商榷的.但它可能值得一试:) 要使用此模块实现您想要的目标:
重要!传递给map_async的函数必须是pickleable.通常,实例方法不是pickleable,除非你设计它们!请注意,上面的convertfile是一个函数. 如果你确实需要从convertfile中获取结果,那么也有办法做到这一点.多处理文档页面上的示例应该澄清. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |