相关疑难解决方法(0)

如何卸载(重新加载)Python模块?

我有一个长期运行的Python服务器,并希望能够在不重新启动服务器的情况下升级服务.这样做的最佳方法是什么?

if foo.py has changed:
    unimport foo  <-- How do I do this?
    import foo
    myfoo = foo.Foo()
Run Code Online (Sandbox Code Playgroud)

python module reload python-import

759
推荐指数
15
解决办法
59万
查看次数

sys.getrefcount继续

链接文字

我得到了引用计数的概念

所以,当我执行"del astrd"时,引用计数降为零,astrd被gc收集?

这是示例代码.这些代码是我在昨天的问题之后开发的:链接文本

one.py:

def abc():

print "Hello"
print "123"
print '345'
Run Code Online (Sandbox Code Playgroud)

two.py:

import one
#reload(one)

#def defg():

one.abc()
Run Code Online (Sandbox Code Playgroud)

three.py:

import os,sys,gc
from time import sleep

import two
#reload(two)
#two.defg()

sleep(20)


directory = os.listdir('.')

for filename in directory:

        if filename[-3:] == 'pyc':

                print '- ' + filename

                print sys.getrefcount(filename)

                file_name = os.path.splitext (filename)[0]

                del file_name   # remove the local reference

                del sys.modules[os.path.splitext (filename)[0]] # removes import

                gc.collect()    # garbage collect

                #del sys.modules[filename]

                #del filename

                #os.remove(filename)
Run Code Online (Sandbox Code Playgroud)

我在three.py中所做的是对还是不对?有没有必要的步骤?如果是,为什么?

请帮我解决这个问题.

python del

0
推荐指数
1
解决办法
1727
查看次数

标签 统计

python ×2

del ×1

module ×1

python-import ×1

reload ×1