我一直在尝试编写一个简单的python应用程序来实现工作队列 我发现有关线程的每个网页都有一些随机的评论,你不应该使用python线程因为这个或那个,有人可以帮助我吗?什么是Python线程,我可以使用它吗?如果是哪个lib?标准的还不错吗?
答案 0 :(得分:5)
Python的线程非常可行,对许多任务都很有用。由于它们是使用本机操作系统线程实现的,因此它们允许执行阻塞系统调用并同时保持“运行” - 通过在单独的线程中调用阻塞系统调用。这对于必须同时执行多项操作的程序(即GUI和其他事件循环)非常有用,甚至可以提高IO绑定任务的性能(例如Web抓取)。
然而,由于全局解释器锁,它排除了实际同时运行多个线程的Python解释器,如果您希望在多个CPU核心上分发 CPU密集型代码通过线程并以这种方式提高性能,你运气不好。您可以使用multiprocessing
模块执行此操作,该模块提供类似于threading
的界面,并使用进程而不是线程分配工作。< / p>
我还应该补充说,C扩展不需要被GIL绑定,并且许多扩展都会释放它,因此C扩展可以通过使用线程来使用多个内核。
所以,这完全取决于你究竟需要做什么。
答案 1 :(得分:0)
threading
模块,非常棒。答案 2 :(得分:0)
GIL应该为您提供有关该主题的一些信息。