我是线程的新手,想知道为各种任务生成大量线程是否不好(在服务器环境中)。与更线性的编程相比,线程是否占用更多的内存/CPU?
最佳答案
如果你想使用多线程,你必须考虑多方面的事情:
- 您只能同时运行#processors 个线程。 (显而易见)
- 在 Python 中,每个线程都是一个“内核线程”,通常占用大量资源(Linux 上默认为 8 MB 堆栈)
- Python 有一个全局解释器锁,这意味着一次只能处理一个 python 指令,而与处理器的数量无关。但是,如果您的线程之一等待 IO,则会释放此锁。
我从中得出的结论:
- 如果您正在进行 IO(Turbogears、Twisted)或使用正确编码的扩展模块 (numpy),请使用线程。
- 如果您想同时执行 python 代码,请使用进程(使用多进程模块最简单)
关于python - Python 中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/939754/