关于如何在Python中使用线程的一般教程或好资源?
何时使用线程,它们如何有效,以及线程的某些一般背景[特定于Python]?
答案 0 :(得分:13)
如果您希望一次运行两件事,或者希望在后台运行某些内容而不减慢主进程,则应使用线程。
我建议只在必要时才使用线程。它们通常会增加程序的复杂性
线程的主要文档在这里:http://docs.python.org/library/threading.html
这里有一些例子:
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
答案 1 :(得分:8)
在编写多线程Python应用程序之前需要花费时间和精力才能记住的一件事是存在Global Interpreter Lock(GIL),因此您实际上不会一次运行多个线程。
这使得线程不适合尝试利用多个核心或CPU。你可以从多路复用其他资源(网络,磁盘......)中获得一些加速,但在我的经验中它从来没有特别明显。
一般情况下,我只在一次发生多个逻辑上独立的任务时使用线程,但我希望它们都在同一个VM中。一个线程从Web中提取数据并将其放在Queue上,而另一个线程从Queue弹出并写入数据库,就像这样。
使用Python 2.6,有一个非常酷的新multiprocessing
模块 - 它有一个与threading
模块非常相似的接口,但实际上产生了新的操作系统进程,回避了GIL。
答案 2 :(得分:3)
有一个很棒的pdf,Tutorial on Threads Programming with Python 加州大学戴维斯分校的Norman Matloff和Francis Hsu。
应尽可能避免使用线程。它们增加了复杂性,同步问题和难以调试的问题。但是有些问题需要它们(即GUI编程),但如果可以,我建议您寻找单线程解决方案。
答案 3 :(得分:1)
有几个教程here。