在不退出主程序的情况下退出导入的模块 - Python
Exit an imported module without exiting the main program - Python
我有一个名为 randomstuff
的模块,我将其导入到我的主程序中。问题是有时 randomstuff
中 运行 的代码需要停止,而不影响主程序。
我试过 exit()、quit() 和一些 os 函数,但它们都想 close 我的主程序。在模块内部,我有一个线程检查模块是否应该停止 - 那么当它意识到程序必须停止时,我应该在线程中放置什么函数。
关于如何解决这个问题有什么想法吗?
谢谢
我有一个新的答案,因为我现在明白你的意思了。您必须使用布尔值扩展线程 class 以存储线程的当前状态,如下所示:
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
基本上我在 try-except 中导入了模块,但由于我想在多个模块上做同样的事情,我找到了一种方法来以编程方式在单个 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()
我有一个名为 randomstuff
的模块,我将其导入到我的主程序中。问题是有时 randomstuff
中 运行 的代码需要停止,而不影响主程序。
我试过 exit()、quit() 和一些 os 函数,但它们都想 close 我的主程序。在模块内部,我有一个线程检查模块是否应该停止 - 那么当它意识到程序必须停止时,我应该在线程中放置什么函数。
关于如何解决这个问题有什么想法吗? 谢谢
我有一个新的答案,因为我现在明白你的意思了。您必须使用布尔值扩展线程 class 以存储线程的当前状态,如下所示:
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
基本上我在 try-except 中导入了模块,但由于我想在多个模块上做同样的事情,我找到了一种方法来以编程方式在单个 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()