在不退出主程序的情况下退出导入的模块 - Python

时间:2015-01-21 16:19:07

标签: python exit quit

我有一个名为randomstuff的模块,我将其导入到我的主程序中。问题是,有时需要停止在randomstuff中运行的代码,而不会影响主程序。

我尝试过exit(),quit()和一些os函数,但是所有这些函数都想关闭我的主程序。在模块内部,我有一个线程来检查模块是否应该停止 - 所以当它意识到必须停止程序时,我应该在线程中放入什么函数。

有关如何解决此问题的任何想法? 感谢

2 个答案:

答案 0 :(得分:0)

我有一个新答案,因为我现在知道你的意思了。您必须使用布尔值扩展线程类以存储线程的当前状态,如下所示:

mythread.py

from threading import *
import time

class MyThread(Thread):
    def __init__(self):
        self.running = True
        Thread.__init__(self)

    def stop(self):
        self.running = False

    def run(self):
        while self.running:
            print 'Doing something'
            time.sleep(1.0/60)


thread = MyThread()
thread.start()

mainscript.py

from mythread import *
thread.stop() # omit this line to continue the thread

答案 1 :(得分:0)

基本上,我在try除外中导入了模块,但是由于我想对多个模块执行相同的操作,因此我找到了一种方法,可以通过编程方式在单个try-except中循环遍历模块并继续。

在主程序中:

import importlib
importList = ['module1','module2']
for lib in importList:
    try:
        print('Importing %s' % lib)
        globals()[lib] = importlib.import_module(lib)
    except SystemExit:
        continue

在模块线程中:

sys.exit()