Python子线程通过事件与调用者通信
相关的: 在子线程中捕获异常时:Python子线程通过事件与调用者通信,python,multithreading,Python,Multithreading,相关的: 在子线程中捕获异常时: 我需要让线程调用者知道 在相关的帖子中,accepted answer会检查队列,这很好,但它会阻止主调用者执行任何其他操作,因为它会继续检查队列 因此,如果它是基于事件的,那将是理想的 解决方案应该是:主调用者做一些事情(不连续地检查子线程中的队列错误),如果子线程中出现问题,子线程通过一些事件让主调用者知道,主调用者处理错误 我一直在看不同的文章和解决方案,但所有事件内容都是针对主调用方与子线程通信,而不是相反 任何子线程通过事件与调用者通信的解决方案?没有
我需要让线程调用者知道 在相关的帖子中,accepted answer会检查队列,这很好,但它会阻止主调用者执行任何其他操作,因为它会继续检查队列 因此,如果它是基于事件的,那将是理想的 解决方案应该是:主调用者做一些事情(不连续地检查子线程中的队列错误),如果子线程中出现问题,子线程通过一些事件让主调用者知道,主调用者处理错误 我一直在看不同的文章和解决方案,但所有事件内容都是针对主调用方与子线程通信,而不是相反
任何子线程通过事件与调用者通信的解决方案?没有“线程调用者”这样的东西。所有线程都是相等的 在您的头脑中,“主线程”是一种特殊的东西,因为Python免费提供给您,但就Python而言,主线程和其他线程一样只是一个踏板 因此,您的问题归结为:如何在两个线程之间交换信息 具有一个或多个队列 通常,伪代码如下所示:
get()
将不会阻塞。如果它是空的,那么你可以做其他事情
当您定义一个“kill”命令时,步骤4通常更容易实现,线程对该命令的响应是“我完成了”回复
然后可以发送N个kill命令并等待N个回复。之后,您可以确保所有线程都已完成。调用threading.Thread()的人就是我所说的被调用者我知道get可能是非阻塞的,但是。。然后你必须问这样一个问题:我是否必须在程序运行的整个过程中检查队列?这听起来是个糟糕的解决方案,你多久检查一次,什么时候检查一次,诸如此类。如果它是基于事件的,那么你不必回答这些问题