首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中线程构建wordcloud

在python中线程构建wordcloud
EN

Stack Overflow用户
提问于 2015-12-18 06:27:03
回答 1查看 163关注 0票数 0

在python中,我正在构建一个简单的单词频率计数器应用程序。这份文件有将近160万字。我把工作(句子)平分在线上。理想情况下,除了运行时间随着线程数量的增加而减少(直到某个阈值)外,在我的测试中似乎不是这样的。由于某种原因,每次单线程都比多线程实现快得多。早些时候,我使用锁写入全局哈希表,但我发现对于多线程环境来说,这是非常低效率的(至少要慢2-3倍)。然后,我开始为每个线程编写单独的哈希表,并最终将它们合并。单线程方法现在需要时间~4.5秒,但是多线程方式至少慢一两秒钟。对我做错了什么有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-18 06:39:33

原因被称为全局解释器锁。这种机制使得在任何给定时间只执行一个线程成为可能。

您可能会注意到另一个异常,您拥有的内核越多,代码运行的速度就越慢。如果所有线程都位于单个内核上,操作系统可以调度它们的执行,而不需要争用GIL,但是如果线程在多个内核之间被分割,则会出现GIL的争用,这是非常明显的。

如果您希望进行并行处理,那么应该考虑使用多重过程 (而不是线程)的方法,这是python的首选方法。

您仍然可以使用线程来阻止IO操作,尽管在这个场景中编写非阻塞代码更好,但扭曲是这方面的流行框架。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34349674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档