回覆列表
  • 1 # 千鋒長沙

    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,卷積,快速搜尋,基本統計,線性代數,直方圖等內建。

  • 中秋節和大豐收的關聯?
  • 活海螺直接冷凍後能吃嗎?