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