使用Python线程时需要注意的事项有哪些?
我对Python中的线程还很陌生,有几个初学者的问题。
当我尝试使用Python的threading
模块启动超过五十个线程时,就会出现MemoryError
的错误。虽然这些线程本身占用的内存很少,但看起来是线程管理的开销导致了内存问题。
- 有没有什么办法可以增加内存容量,或者让Python允许更多的线程运行呢?
- 你在使用
threading
模块时,最多能同时运行多少个线程?为了达到这个数量,你有没有使用什么技巧? - 使用
threading
模块时,还有其他需要注意的事项吗?
3 个回答
5
你的问题不能简单地回答,因为线程的使用好坏总是要看具体要解决的问题。你也没有告诉我们你用的是哪个版本的Python,所以我假设你用的是“默认”的CPython,而不是IronPython之类的。下面是一些提示和想法,帮助你进一步思考你的问题:
- 你为什么需要这么多线程?你的电脑可能根本无法同时运行这么多线程。
- 可以看看Stackless Python。我不知道这个项目现在的情况,但我觉得它是为这类问题设计的。
- 全局解释器锁会阻止纯Python代码真正并行运行。不过,C语言的方法可以并行运行,所以在实际使用中,有时候很难预测Python在并行处理时的表现。
- Python有很多优秀的库。看看其中有没有已经解决你设计问题的库。如果你的问题和网络有关,可以看看Twisted这个库。