我一直在尝试编写一个简单的python应用程序来实现工作线程队列我找到的每个关于线程的网页都有一些随机的人评论它,你不应该使用 Python 线程,因为这个或那个,有人可以帮助我吗?Python 线程是怎么回事,我可以使用它吗?如果是,哪个库?标准的够好吗?
Python 的线程对于许多任务都是完全可行和有用的。由于它们是使用本机操作系统线程实现的,因此它们允许执行阻塞系统调用并保持"运行" - 通过在单独的线程中调用阻塞系统调用。这对于必须同时执行多项操作(即 GUI 和其他事件循环)的程序非常有用,甚至可以提高 IO 绑定任务(例如 Web 抓取)的性能。
但是,由于全局解释器锁(全局解释器锁)阻止了 Python 解释器实际同时运行多个线程,如果您希望使用线程在多个 CPU 内核上分发 CPU 密集型代码并以这种方式提高性能,那么您就不走运了。但是,您可以使用 multiprocessing
模块执行此操作,该模块提供类似于threading
的接口,并使用进程而不是线程来分配工作。
我还应该补充一点,C 扩展不需要受 GIL 约束,而且许多扩展确实会发布它,因此 C 扩展可以使用线程使用多个内核。
因此,这完全取决于您到底需要做什么。
- 你不应该需要使用线程。95% 的代码不需要线程。
- 是的,Python 线程是完全有效,它已实现通过操作系统的本机线程。
- 使用标准库
threading
模块,它非常好。
GIL 应该为您提供有关该主题的一些信息。