日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python文件编译_编译Python文件

發(fā)布時間:2023/12/9 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python文件编译_编译Python文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

編譯Python文件

一、編譯Python文件

為了提高加載模塊的速度,強(qiáng)調(diào)強(qiáng)調(diào)強(qiáng)調(diào):提高的是加載速度而絕非運行速度。python解釋器會在__pycache__目錄中下緩存每個模塊編譯后的版本,格式為:module.version.pyc。通常會包含python的版本號。例如,在CPython3.3版本下,spam.py模塊會被緩存成__pycache__/spam.cpython-33.pyc。這種命名規(guī)范保證了編譯后的結(jié)果多版本共存。

Python檢查源文件的修改時間與編譯的版本進(jìn)行對比,如果過期就需要重新編譯。這是完全自動的過程。并且編譯的模塊是平臺獨立的,所以相同的庫可以在不同的架構(gòu)的系統(tǒng)之間共享,即pyc使一種跨平臺的字節(jié)碼,類似于JAVA, .NET,是由python虛擬機(jī)來執(zhí)行的,但是pyc的內(nèi)容跟python的版本相關(guān),不同的版本編譯后的pyc文件不同,2.5編譯的pyc文件不能到3.5上執(zhí)行,并且pyc文件是可以反編譯的,因而它的出現(xiàn)僅僅是用來提升模塊的加載速度的,不是用來加密的。

# python解釋器在以下兩種情況下不檢測緩存

1. 如果是在命令行中被直接導(dǎo)入模塊,則按照這種方式,每次導(dǎo)入都會重新編譯,并且不會存儲編譯后的結(jié)果(python3.3以前的版本應(yīng)該是這樣)

python -m spam.py

2. 如果源文件不存在,那么緩存的結(jié)果也不會被使用,如果想在沒有源文件的情況下來使用編譯后的結(jié)果,則編譯后的結(jié)果必須在源目錄下

sh-3.2 # ls

__pycache__ spam.py

sh-3.2 # rm -rf spam.py

sh-3.2 # mv __pycache__/spam.cpython-36.pyc ./spam.pyc

sh-3.2 # python3 spam.pyc

spam

# 提示:

1. 模塊名區(qū)分大小寫,foo.py與FOO.py代表的是兩個模塊

2. 你可以使用-O或者-OO轉(zhuǎn)換python命令來減少編譯模塊的大小

-O轉(zhuǎn)換會幫你去掉assert語句

-OO轉(zhuǎn)換會幫你去掉assert語句和__doc__文檔字符串

由于一些程序可能依賴于assert語句或文檔字符串,你應(yīng)該在在確認(rèn)需要

的情況下使用這些選項。

3. 在速度上從.pyc文件中讀指令來執(zhí)行不會比從.py文件中讀指令執(zhí)行更快,只有在模塊被加載時,.pyc文件才是更快的

4. 只有使用import語句是才將文件自動編譯為.pyc文件,在命令行或標(biāo)準(zhǔn)輸入中指定運行腳本則不會生成這類文件,因而我們可以使用compieall模塊為一個目錄中的所有模塊創(chuàng)建.pyc文件

模塊可以作為一個腳本(使用python -m compileall)編譯Python源

python -m compileall /module_directory 遞歸著編譯

如果使用python -O -m compileall /module_directory -l則只一層

命令行里使用compile()函數(shù)時,自動使用python -O -m compileall

詳見:https://docs.python.org/3/library/compileall.html#module-compileall

二、批量生成.pyc文件

import compileall

compileall.compile_dir('$dir')

其中,$dir 為Python源代碼所在的目錄。

三、總結(jié)

編譯Python文件:編譯文件提高的是加載速度而絕非運行速度

總結(jié)

以上是生活随笔為你收集整理的python文件编译_编译Python文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。