当前位置: 首页 > 面试题库 >

检查主线程是否仍在另一个线程中

法玮
2023-03-14
问题内容

如何检查主线程是否还存在于另一个(非守护进程,子线程)线程中?

子线程是非守护程序线程,我想检查Main线程是否仍在运行,并根据结果停止该非守护程序线程。

(使线程守护程序不适用于我的情况,因为 stdout 当线程设置为守护程序时,我的线程写入该线程会产生问题)

使用python 2.7


问题答案:
  • 对于Python 2.7,您可以尝试以下操作:
    for i in threading.enumerate():
    

    if i.name == “MainThread”:
    print i.is_alive()

不建议在函数名称中使用小写驼峰,因此您应该使用i.is_alive()而不是i.isAlive()

  • 如果您喜欢单线,请尝试以下操作:
    is_main_thread_active = lambda : any((i.name == "MainThread") and i.is_alive() for i in threading.enumerate())
    

然后调用is_main_thread_active()以检查主线程是否处于活动状态。

但是,一次使用就可以直接使用它,而无需创建函数。

any((i.name == "MainThread") and i.is_alive() for i in threading.enumerate())

  • 检查此页面以获取有关线程的更多信息。

  • 在python 3.4中,存在一个专用函数来返回主线程,因此您可以使用此衬套查看您的主线程是否仍然存在。

    threading.main_thread().is_alive()
    

希望这对您有所帮助。



 类似资料:
  • 如何检查当前线程是否是Linux上的主线程?看起来gettid()只返回一个pid,但linux似乎并不保证main()的线程总是具有一个常量和统一的pid。 这样做的原因是,我正在进行自动并行化,并且我希望确保pthread_create()不会在已经运行在pthread_create()创建的线程上的函数中调用。

  • 问题内容: 之前已针对Android,ObjectiveC和C++解决了此问题,但显然不适用于Python。如何可靠地确定当前线程是否为主线程?我可以想到一些方法,但没有一种方法能让我真正满意,因为考虑到与存在的方法相比,它可能是如此简单。 主线程是这样实例化的: 所以一个人可以做 但是这个名字是固定的吗?我见过的其他代码检查了线程名称中是否包含任何代码。 存储启动线程 我可以在程序启动时即在没有

  • 所以一个人可以做 但这个名字固定了吗?我看到的其他代码检查了是否包含在线程名称的任何地方。 我可以在程序启动时存储对起始线程的引用,也就是在没有其他线程的时候。这是绝对可靠的,但对于这样一个简单的查询来说太麻烦了? 有没有更简洁的方法?

  • 我需要检查运行某段代码的线程是否是主(UI)线程。我怎样才能做到这一点呢?

  • 在一个android服务中,我创建了用于执行一些后台任务的线程。 我遇到一个情况,线程需要在主线程的消息队列上发布特定任务,例如。 有没有方法获取主线程的并从我的另一个线程向它发布/?

  • 我如何启动两个线程,其中thread1首先执行,thread2在thread1结束时启动,而主方法线程可以在不锁定其他两个线程的情况下继续工作? 我尝试了join(),但是它需要从线程调用,线程必须等待另一个线程,没有办法执行类似thread2.join(thread1)的操作;因此,如果我在main()中调用join,我将有效地停止主线程的执行,而不仅仅是Thread2的执行。 #编辑:为什么我

  • 本文向大家介绍如何在C#中检查线程是否为后台线程,包括了如何在C#中检查线程是否为后台线程的使用技巧和注意事项,需要的朋友参考一下 要检查线程是否是后台线程,代码如下: 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-

  • 问题内容: 作为构建穷人看门狗并确保应用程序崩溃的一种方法(直到我弄清原因),我需要编写一个PHP CLI脚本,该脚本将由cron每5百万次运行一次,以检查该进程仍在运行。 基于此页面,我尝试了以下代码,但是即使我使用虚假数据对其进行调用,它也始终返回True: 接下来,我尝试了这段代码 … …但是没有达到我的期望: FWIW,此脚本与PHP 5.2.5的CLI版本一起运行,并且操作系统为uCli