1
我看到一個問題,我的python腳本的執行有時可能需要更長的時間才能導入庫。如果我最近沒有執行腳本,或者我從另一臺服務器運行腳本,則會發生這種情況。第一次延期後,進口時間變得更快。我想知道是什麼導致了這個緩慢的導入,如果有什麼辦法來阻止它?導入庫時導致此延遲的原因是什麼?
import time
s_time = time.time()
import sys,re,os,logging,signal
from argparse import ArgumentParser
print('Internal Import Time: {}'.format(time.time() - s_time))
s_time = time.time()
from backtrace import Backtrace,BacktraceSet
from report import Report
from core import Core
from burtapi import BurtAPI
print('External Import Time: {}'.format(time.time() - s_time))
在這個例子中,backtrace,report,core和burtapi是我創建的庫。
[[email protected] tool]$ ./tool --python
Internal Import Time: 2.8281359672546387
External Import Time: 13.053943157196045
Enter/Paste your content. Ctrl-D to save it.
^CYou pressed Ctrl+C!
[[email protected] tool]$ ./tool --python
Internal Import Time: 0.12279081344604492
External Import Time: 0.6948020458221436
Enter/Paste your content. Ctrl-D to save it.
^CYou pressed Ctrl+C!
ssh to different server (with same storage mount)
[[email protected] tool]$ ./tool --python
Internal Import Time: 3.0217390060424805
External Import Time: 13.151482105255127
Enter/Paste your content. Ctrl-D to save it.
^CYou pressed Ctrl+C!
[[email protected] tool]$
./tool是一個bash腳本調用python3 /path/to/script.py
這可能是python在首次運行之前生成字節碼(編譯一些庫)所需的時間。這也是當你刪除.pyc文件時可以看到的。更多關於這裏:https://stackoverflow.com/questions/2998215/if-python-is-interpreted-what-are-pyc-files 嘗試刪除您創建庫的文件夾中的.pyc文件和看看是否發生了同樣的事情。 – ma3oun
@ ma3oun Python如何確定何時需要重新編譯?字節碼在__pycache__中,但是如果我等待幾個小時或更改服務器,它將觸發另一個編譯,即使字節碼已經存在。 – Takkun