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