1、多執行緒使用Python是個好主意嗎?列出一些方法可以讓一些Python程式碼以並行方式執行。
答:Python不允許真正意義上的多執行緒。它有一個多執行緒包,但如果你想使用多執行緒來加速你的程式碼,那麼使用它通常不是一個好主意。Python有一個名為全域性直譯器鎖(Global Interpreter Lock(GIL))的結構。GIL確保每次只能執行一個“執行緒”。一個執行緒獲取GIL,做一點工作,然後將GIL傳遞到下一個執行緒。這種情況發生的很快,因此對於人眼看來,你的執行緒似乎是並行執行的,但它們實際上只是輪流使用相同的CPU核心。所有這些GIL傳遞都增加了執行的記憶體。這意味著如果你想讓程式碼執行得更快,那麼使用執行緒包通常不是一個好主意。
使用Python的執行緒包也是有原因的。如果你想同時執行一些東西,並且效率不是一個問題,那麼它就完全沒問題了。或者,如果你正在執行需要等待某些事情的程式碼(例如某些IO),那麼它可能會很有意義。但是執行緒庫不會讓你使用額外的CPU核心。
多執行緒可以外包到作業系統(透過多處理),一些呼叫Python程式碼的外部應用程式(例如,Spark或Hadoop),或者Python程式碼呼叫的一些程式碼例如:你可以使用你的Python程式碼呼叫一個C函式來完成昂貴的多執行緒事務。
2、這段程式碼輸出了什麼:
def f(x,l=[]):for i in range(x):l.append(i*i)print(l) f(2)f(3,[3,2,1])f(3)
答:[0, 1][3, 2, 1, 0, 1, 4][0, 1, 0, 1, 4]
3、如何在Python中管理記憶體?
Python中的記憶體管理由Python私有堆空間管理。所有Python物件和資料結構都位於私有堆中。程式設計師無權訪問此私有堆。Python直譯器負責處理這個問題。Python物件的堆空間分配由Python的記憶體管理器完成。核心API提供了一些程式設計師編寫程式碼的工具Python還有一個內建的垃圾收集器,它可以回收所有未使用的記憶體,並使其可用於堆空間。
4、range&xrange有什麼區別?
在大多數情況下,xrange和range在功能方面完全相同。它們都提供了一種生成整數列表的方法,唯一的區別是range返回一個Python列表物件,x range返回一個xrange物件。
這就表示xrange實際上在執行時並不是生成靜態列表。它使用稱為yielding的特殊技術根據需要建立值。該技術與一種稱為生成器的物件一起使用。因此如果你有一個非常巨大的列表,那麼就要考慮xrange。
5、Python中help()和dir()函式的用法是什麼?
Help()和dir()這兩個函式都可以從Python直譯器直接訪問,並用於檢視內建函式的合併轉儲。
help()函式:help()函式用於顯示文件字串,還可以檢視與模組,關鍵字,屬性等相關的使用資訊。
dir()函式:dir()函式用於顯示定義的符號。
6、NumPy中有哪些操作Python列表的函式?
它們有一定的侷限性:它們不支援畫素化加法和乘法等“向量化”操作,並且它們可以包含不同型別的物件這一事實意味著Python必須儲存每個元素的型別資訊,並且必須執行型別排程程式碼在對每個元素進行操作時。
NumPy不僅效率更高; 它也更方便。你可以免費獲得大量的向量和矩陣運算,這有時可以避免不必要的工作。它們也得到有效實施。
NumPy陣列更快,你可以使用NumPy,FFT,卷積,快速搜尋,基本統計,線性代數,直方圖等內建。
1、多執行緒使用Python是個好主意嗎?列出一些方法可以讓一些Python程式碼以並行方式執行。
答:Python不允許真正意義上的多執行緒。它有一個多執行緒包,但如果你想使用多執行緒來加速你的程式碼,那麼使用它通常不是一個好主意。Python有一個名為全域性直譯器鎖(Global Interpreter Lock(GIL))的結構。GIL確保每次只能執行一個“執行緒”。一個執行緒獲取GIL,做一點工作,然後將GIL傳遞到下一個執行緒。這種情況發生的很快,因此對於人眼看來,你的執行緒似乎是並行執行的,但它們實際上只是輪流使用相同的CPU核心。所有這些GIL傳遞都增加了執行的記憶體。這意味著如果你想讓程式碼執行得更快,那麼使用執行緒包通常不是一個好主意。
使用Python的執行緒包也是有原因的。如果你想同時執行一些東西,並且效率不是一個問題,那麼它就完全沒問題了。或者,如果你正在執行需要等待某些事情的程式碼(例如某些IO),那麼它可能會很有意義。但是執行緒庫不會讓你使用額外的CPU核心。
多執行緒可以外包到作業系統(透過多處理),一些呼叫Python程式碼的外部應用程式(例如,Spark或Hadoop),或者Python程式碼呼叫的一些程式碼例如:你可以使用你的Python程式碼呼叫一個C函式來完成昂貴的多執行緒事務。
2、這段程式碼輸出了什麼:
def f(x,l=[]):for i in range(x):l.append(i*i)print(l) f(2)f(3,[3,2,1])f(3)
答:[0, 1][3, 2, 1, 0, 1, 4][0, 1, 0, 1, 4]
3、如何在Python中管理記憶體?
Python中的記憶體管理由Python私有堆空間管理。所有Python物件和資料結構都位於私有堆中。程式設計師無權訪問此私有堆。Python直譯器負責處理這個問題。Python物件的堆空間分配由Python的記憶體管理器完成。核心API提供了一些程式設計師編寫程式碼的工具Python還有一個內建的垃圾收集器,它可以回收所有未使用的記憶體,並使其可用於堆空間。
4、range&xrange有什麼區別?
在大多數情況下,xrange和range在功能方面完全相同。它們都提供了一種生成整數列表的方法,唯一的區別是range返回一個Python列表物件,x range返回一個xrange物件。
這就表示xrange實際上在執行時並不是生成靜態列表。它使用稱為yielding的特殊技術根據需要建立值。該技術與一種稱為生成器的物件一起使用。因此如果你有一個非常巨大的列表,那麼就要考慮xrange。
5、Python中help()和dir()函式的用法是什麼?
Help()和dir()這兩個函式都可以從Python直譯器直接訪問,並用於檢視內建函式的合併轉儲。
help()函式:help()函式用於顯示文件字串,還可以檢視與模組,關鍵字,屬性等相關的使用資訊。
dir()函式:dir()函式用於顯示定義的符號。
6、NumPy中有哪些操作Python列表的函式?
它們有一定的侷限性:它們不支援畫素化加法和乘法等“向量化”操作,並且它們可以包含不同型別的物件這一事實意味著Python必須儲存每個元素的型別資訊,並且必須執行型別排程程式碼在對每個元素進行操作時。
NumPy不僅效率更高; 它也更方便。你可以免費獲得大量的向量和矩陣運算,這有時可以避免不必要的工作。它們也得到有效實施。
NumPy陣列更快,你可以使用NumPy,FFT,卷積,快速搜尋,基本統計,線性代數,直方圖等內建。