是什么导致导入库时出现这种延迟?

2024-05-12 23:17:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我看到一个问题,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是我创建的库

[name@server1 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!
[name@server1 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)

[name@server2 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!
[name@server2 tool]$

./tool是一个bash脚本,它调用python3 /path/to/script.py


Tags: tonamefromimport脚本yourtimetool
1条回答
网友
1楼 · 发布于 2024-05-12 23:17:02

这里有更多的因素,但有三个主要因素:

首先,导入模块需要找到系统上的模块,这需要从磁盘读取数据

其次,如果在这些模块中有任何更改,解释器就需要编译它们

最后,但并非最不重要的是,当解释器开始导入它们时,模块本身可能包含需要执行的指令/代码,这些指令/代码可能会执行很多操作。假设其中一个模块连接到一个数据库,或者必须过滤一个大的哈希表

编辑:我应该指出,这些都是假设,很难说你的情况到底发生了什么,但在大多数情况下,这就是正在发生的事情

相关问题 更多 >