Python多线程Yay还是nay?

时间:2011-05-16 09:51:15

标签: python multithreading python-multithreading

我一直在尝试编写一个简单的python应用程序来实现工作队列 我发现有关线程的每个网页都有一些随机的评论,你不应该使用python线程因为这个或那个,有人可以帮助我吗?什么是Python线程,我可以使用它吗?如果是哪个lib?标准的还不错吗?

3 个答案:

答案 0 :(得分:5)

Python的线程非常可行,对许多任务都很有用。由于它们是使用本机操作系统线程实现的,因此它们允许执行阻塞系统调用并同时保持“运行” - 通过在单独的线程中调用阻塞系统调用。这对于必须同时执行多项操作的程序(即GUI和其他事件循环)非常有用,甚至可以提高IO绑定任务的性能(例如Web抓取)。

然而,由于全局解释器锁,它排除了实际同时运行多个线程的Python解释器,如果您希望在多个CPU核心上分发 CPU密集型代码通过线程并以这种方式提高性能,你运气不好。您可以使用multiprocessing模块执行此操作,该模块提供类似于threading的界面,并使用进程而不是线程分配工作。< / p>

我还应该补充说,C扩展不需要被GIL绑定,并且许多扩展都会释放它,因此C扩展可以通过使用线程来使用多个内核。

所以,这完全取决于你究竟需要做什么。

答案 1 :(得分:0)

  • 您不应需要使用 穿线。 95%的代码需要 线程。
  • 是的,Python线程是 完全有效,它已实施 通过操作系统的本机 线程。
  • 使用标准库 threading模块,非常棒。

答案 2 :(得分:0)

GIL应该为您提供有关该主题的一些信息。