簡體   English   中英

Python 緩存字節碼 (pyc) 文件何時更新?

[英]When do Python cached bytecode (pyc) files get updated?

有時我通過指向make PYTHON_TEST=path_of_module_to_test test來在特定模塊上運行 unittest 並且如果這個模塊path_of_module_to_test test導入了一些其他已更新的 python 模塊,那么從這個模塊導入完成將從更新的 py 源文件或未更新的源文件中獲取pyc 文件,還是導入會導致更新依賴的 pyc 文件?

來自PEP 3147

CPython 將其源代碼編譯為“字節碼”,並且出於性能原因,只要源文件發生更改,它就會將此字節碼緩存在文件系統上。 這使得 Python 模塊的加載速度更快,因為可以繞過編譯階段。 當您的源文件是 foo.py 時,CPython 將字節碼緩存在源文件旁邊的 foo.pyc 文件中。

如果您的來源發生變化; CPython 將重新編譯並重新緩存字節碼。

請注意,以上內容適用於Python 2.x 這一切在Python 3.2中的Python 3.x中都發生了變化:PEP 3147:PYC 存儲庫目錄

注意:當我們在這里提到“CPython”時,我們指的是您最有可能從https://www.python.org使用的 Python 實現,因為這種行為(我相信)是特定於實現的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM