回答
當你想讓兩件東西一次運行,或者希望在後臺運行而不減慢主流程時,應該使用線程。
我的建議是隻使用線程,如果你必須。它們通常會增加程序的複雜性。
穿線的主要文件是在這裏: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
有幾個教程here。
有一個了不起的pdf,Tutorial on Threads Programming with Python作者: 加州大學戴維斯分校的Norman Matloff和Francis Hsu。
應儘可能避免使用線程。它們增加了很多複雜性,同步問題和難以調試的問題。但是,有些問題需要它們(即GUI編程),但是如果可以的話,我鼓勵您尋找單線程解決方案。
在花費時間和精力編寫多線程Python應用程序之前要記住的一件事是,有一個Global Interpreter Lock(GIL),所以實際上一次不會運行多個線程。
這使得線程不適合嘗試利用多個內核或CPU。您可能會通過複用其他資源(網絡,磁盤,...)來加快速度,但根據我的經驗,這一點從未特別明顯。
一般來說,我只在一次發生幾個邏輯上分離的任務時使用線程,但我希望它們都在同一個VM中。一個線程從Web上提取數據並將其放在Queue上,而另一個線程從Queue中彈出並寫入數據庫,就像這樣。
在Python 2.6中,有一個新的multiprocessing
模塊非常酷 - 它有一個非常類似於threading
模塊的接口,但實際上產生了新的OS進程,避開了GIL。
- 1. Python中的線程 - 線程或進程?
- 2. Python中的線程-
- 3. Python中的線程與線程模塊
- 4. Python的線程
- 5. Python 2.7中的線程
- 6. Python中的線程鎖
- 7. Python中的線程+ raw_input
- 8. 簡化python中的線程
- 9. Python中的線程錯誤
- 10. Python中的併發線程
- 11. python中的多線程
- 12. Python中的線程示例
- 13. Python中的線程練習
- 14. Python中的多線程Falcon
- 15. Python中的線程處理
- 16. 識別Python中的線程
- 17. 關於Python中的線程
- 18. Python中的線程同步
- 19. python 2.7中的多線程?
- 20. Python中的多線程
- 21. Python中的線程/隊列
- 22. rqt ROS中的線程Python
- 23. 停止python中的線程
- 24. Python中的簡單線程
- 25. Python線程/線程實現
- 26. Python線程不是線程
- 27. Python的線程/線程池的實現
- 28. gevent的python線程?
- 29. Python的TCP線程
- 30. 的Python:在線程
對不起,線程不應該「儘可能避免」,它們也不是GUI編程所必需的。 – 2008-12-28 19:14:09