English 中文(简体)
Python中的线程
原标题:
  • 时间:2008-12-28 02:22:38
  •  标签:

Python 中使用线程的通用教程或好资源?

何时使用线程,它们如何有效,并且关于线程(特定于Python)的一些基础知识。

最佳回答

Threads should be used when you want two things to run at once, or want something to run in the background without slowing down the main process.
My recommendation is to only use threads if you have to. They generally add complexity to a program.
The main documentation for threading is here: http://docs.python.org/library/threading.html
Some examples are here:
http://www.devshed.com/c/a/Python/Basic-Threading-in-Python/1/
http://linuxgazette.net/107/pai.html
http://www.wellho.net/solutions/python-python-threads-a-first-example.html

问题回答

在编写多线程 Python 应用程序之前要记住的一件事情是,存在全局解释器锁定 (GIL),因此您实际上不会同时运行多个线程。

这使得线程不适合尝试利用多个内核或 CPU。您可以从多路复用其他资源(网络、磁盘等)中获得一些加速,但在我的经验中从未特别引人注目。

一般来说,只有当有几个逻辑上分离的任务同时发生时,我才使用线程,但我希望它们都在同一个虚拟机中。比如一个线程从Web中获取数据并将其放入队列,同时另一个线程从队列中弹出数据并写入数据库。

在Python 2.6中,有一个新的模块,非常酷-它具有与模块非常相似的接口,但实际上生成新的操作系统进程,规避了GIL。

There is a fantastic pdf, Tutorial on Threads Programming with Python by Norman Matloff and Francis Hsu, of University of California, Davis.

尽可能避免使用线程。它们会增加复杂性、同步问题和难以调试的问题。但是有些问题需要使用它们(例如GUI编程),但如果可以的话,我鼓励您寻找单线程解决方案。

这里有几篇教程:这里





相关问题
热门标签