听起来应该是愚蠢的。但这是我的情景。
我有一个 python-flask 网站,该网站是使用nohup
直播的。现在,即使我删除了__pycache__
中的所有文件和原始.py
文件,程序仍在运行,没有任何错误。那么它从何而来?是否在其他地方创建了任何文件缓存?
注意:我知道我可以杀死这个过程,但只是想知道这个问题
答案 0 :(得分:1)
只要一个进程打开了一个文件,该文件就可以继续使用该进程。没有其他进程可以打开它,并且使用普通的OS实用程序(例如ls
)无法看到它的存在。
对于Python,我认为脚本的编译版本仍然在内存中。从文件系统中删除它不会改变它。
所以你的烧瓶应用程序在它终止之前不受影响,此时驻留内存将被释放,并且操作系统将删除它保持打开的所有文件。
答案 1 :(得分:1)
那么它从哪里开始?
它从内存运行。一旦你的程序被编译成字节代码(或者字节代码已经从.pyc
文件加载),它就被运送到Python虚拟机执行,原始源文件被关闭。删除它不会影响运行过程。