用 mprof 指令畫 Python 記憶體用量圖
這陣子做記憶體用量相關的研究時,就在想怎麼視覺化(visualize) Python 執行時隨時間變化的記憶體用量,當然,步驟越簡單越好。
查了才知道,知名的 memory_profiler 已經把這件事情搞定。
一起來看怎麼畫 Python 記憶體用量圖吧!
Posted on Sep 11, 2023 in Python 模組/套件推薦 , Python 程式設計 - 中階 by Amo Chen ‐ 2 min read
這陣子做記憶體用量相關的研究時,就在想怎麼視覺化(visualize) Python 執行時隨時間變化的記憶體用量,當然,步驟越簡單越好。
查了才知道,知名的 memory_profiler 已經把這件事情搞定。
一起來看怎麼畫 Python 記憶體用量圖吧!
Posted on Sep 11, 2023 in Python 模組/套件推薦 , Python 程式設計 - 中階 by Amo Chen ‐ 2 min read
我們都知道多個執行緒(thread)之間會共用 Process 的記憶體,那你覺得以下範例程式的執行結果會是什麼呢?這是 2 個執行緒分別做 +1 與 -1 運算各 100,000
次的 Python 程式:
import threading
def count(thread_name, step=1):
global v
for i in range(0, 100000):
v += 1 * step
print(f'{thread_name} -> ', v, flush=True)
v = 0
t1 = threading.Thread(target=count, args=('t1', 1, ))
t2 = threading.Thread(target=count, args=('t2', -1, ))
t1.start()
t2.start()
t1.join()
t2.join()
這段範例程式的執行結果,就跟本文要解說的 threading.local() 有關。
Posted on Sep 4, 2023 in Python 程式設計 - 高階 by Amo Chen ‐ 3 min read
遙想以前在公家機關工作時,不管什麼部門都很喜歡設計各式各樣的 docx 檔,例如用 docx 檔做例行性的報表,每天填完之後寄去給上一層的部門進行彙整,這些東西做久了就會覺得無趣,後來我就用 VBA 把 docx 檔變成樣板,裡面有著一堆可以填充文字的 placeholder, 只要執行 VBA 就可以自動產生新的 docx 檔,把分分鐘的事情變成秒秒鐘。
不過 VBA 畢竟還是沒 Python 可愛宜人,不要再用 VBA 了,能夠用 Python 解決的,都要用 Python 解!卍解!
直接交給 Python 套件 docxtpl 吧!
Posted on Sep 3, 2023 in Python 模組/套件推薦 by Amo Chen ‐ 1 min read
你有沒有遇過某些資料或類別 pickle 之後,之後要 unpickle 時出現 AttributeError
的情況,例如:
AttributeError: Can't get attribute 'A' on <module '__main__' (built-in)>
這是由於 pickle 使用的是 serialization by reference 技術,所以某些資料或類別它不會放到序列化的結果,因此這種問題可以試看看用 cloudpickle 解決。
一起看看 cloudpickle 與 pickle 模組之間的差異,以及它如何能解決你的問題吧!
Posted on Sep 3, 2023 in Python 模組/套件推薦 , Python 程式設計 - 中階 by Amo Chen ‐ 2 min read
相信大家學寫程式都有相同的一段經驗,那就是看不懂例外錯誤(exceptions)訊息的意思,你可能每個單字都認識,但組合起來就像天書一樣難以理解⋯⋯。
如果有更容易理解的例外錯誤訊息的話,相信會減輕大家在學習與除錯的痛點!
本文要介紹的 better-exceptions 套件,是一個不管新手、老手都適用的套件,它改良了 Python 的例外錯誤訊息,把錯誤當下的變數值一併顯示在例外錯誤訊息當中,就這一個貼心的舉動,大大改善大家在學習與除錯的體驗。
是一個值得推薦與擁有的套件!
Posted on Aug 25, 2023 in Python 模組/套件推薦 , Python 程式設計 - 初階 by Amo Chen ‐ 3 min read
用範例輕鬆學 Python multiprocessing 模組 一文中提到 4 種 IPC(Inter Process Communication)方法,分別是:
除了上述幾種方式之外, Python 也有提供其他方式滿足開發者對於 IPC(Inter Process Communication) 的相關需求,本文將額外介紹 Pipe, Queue, Array, RawArray 4 種方式。
Posted on Aug 7, 2023 in Python 程式設計 - 中階 by Amo Chen ‐ 5 min read
現在不少人都會選擇 VSCode 作為開發的文字編輯器使用,除了有各式各樣的擴充(extension)可以使用之外,還可以用 GitHub Copilot 加速開發。 不過好像比較少文
Posted on Aug 2, 2023 by Amo Chen ‐ 1 min read
隨著向量資料庫的應用開始普及,後端工程師又多了 1 種資料庫要學習了⋯⋯ 所幸有好心人整理了 1 篇 Python 與各種向量資料庫使用的範例,文件所使用的向量資料
Posted on Aug 1, 2023 by Amo Chen ‐ 1 min read