Pythonスクリプトの実行時にライブラリのインポートに時間がかかることがあるという問題があります。これは、最近スクリプトを実行しなかった場合、または別のサーバーからスクリプトを実行した場合に発生します。最初の遅延後、インポート時間が大幅に短縮されます。この遅い輸入の原因は何ですか?それを防ぐ方法があるのでしょうか?この例のバックトレース、レポート、コア、およびburtapiでライブラリのインポート時にこの遅延の原因は何ですか?
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))
私が作成したライブラリです。
[[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が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