Python并不支持真正意義上的多執行緒,Python中提供了多執行緒包,但是如果你想通過多執行緒提高代碼的速度,使用多執行緒包并不是個好主意,
Python中有一個被稱為Global Interpreter Lock(GIL)的東西,它會確保任何時候你的多個執行緒中,只有一個被執行,
執行緒的執行速度非常之快,會讓你誤以為執行緒是并行執行的,但是實際上都是輪流執行,經過GIL這一道關卡處理,會增加執行的開銷,
這意味著,如果你想提高代碼的運行速度,使用threading包并不是一個很好的方法,
不過還是有很多理由促使我們使用threading包的,如果你想同時執行一些任務,而且不考慮效率問題,那么使用這個包是完全沒問題的,而且也很方便,
但是大部分情況下,并不是這么一回事,你會希望把多執行緒的部分外包給作業系統完成(通過開啟多個行程),或者是某些呼叫你的Python代碼的外部程式(例如Spark或Hadoop),又或者是你的Python代碼呼叫的其他代碼(例如,你可以在Python中呼叫C函式,用于處理開銷較大的多執行緒作業),
本文首發于python黑洞網,博客園同步更新
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/165603.html
標籤:Python
