【发布时间】:2016-04-22 16:58:43
【问题描述】:
我目前正在处理的项目适用于多个 os.system() 调用。我正在努力添加在后台运行这些调用的能力。这将启动一个新线程,调用 os.system() 并将所有输出重定向到 /dev/null。
问题是我想不出结束这些线程的最佳方法。当我在运行 os.system() 调用的线程上调用 .join() 时,系统调用只是接管了主线程。我希望用户能够终止这些线程。
我想到的解决方案是启动一个线程,然后让该线程在另一个线程中启动 os.system() 调用。第一个子线程将不断检查 True/False 值。但是后来我遇到了第一个子线程终止第二个子线程的问题,所以核心问题仍然存在。
这是我的代码现在的样机:
import threading
import os
def a():
os.system('ping www.stackoverflow.com > /dev/null')
threads = []
threads.append(threading.Thread(target=a))
threads[0].start()
#Continue doing other stuff
这里的问题是我无法想出一个稳定的方法来停止这些线程。
【问题讨论】:
-
我已经看到了,但问题是 os.system() 线程无法检查变量,因为它被调用占用了。
-
您的线程运行的
os方法是否实际上会永远运行,或者ping只是一个例子?另外,您是否需要线程停止运行以使主线程继续运行,或者它们是否可以在主线程退出时退出? -
是的。该项目是一组网络分析工具的管理器。它允许用户使用一组命令选择和运行工具。其中一些工具确实可以无限执行。 (Ping 只是一个例子)是的,我希望用户能够在他们想要的时候终止线程。
标签: python multithreading terminate