python - 如何中断python中正在运行的并行进程?
问题描述
我想从其中一个 defs 中退出并行进程(使用返回?),以便程序在此代码的最后一行之后继续:
from threading import Thread
def measureBT():
try:
...
return True
except TimeoutException:
...
return False
def measureWiFi():
...
thread_MeasureBT = Thread(target=measureBT)
thread_MeasureWiFi = Thread(target=measureWiFi)
thread_MeasureBT.start()
thread_MeasureWiFi.start()
thread_MeasureWiFi.join()
thread_MeasureBT.join()
解决方案
问:“我想从其中一个
def
-s... 中退出并行进程,以便程序在此代码的最后一行之后继续:”
这个想法很清楚,方法是非常错误的。
如果这被用于美国宇航局的阿波罗登月计划,那么在 Mare Tranquillitatis 将会有第一个非地球坟墓。
永远不要像上面假设的那样尝试依赖进程/线程终止/完成。
更好地创建一个合作代理结构,一个(或多个,对于更容错的系统)负责任何和所有独立的 BT 测量,另一个(同样独立于任何其他代理、资源或处理)一个负责所有WiFi 测量。
这样,如果出现问题(而且经常出现问题,通常是在最糟糕的时刻,例如在登月期间,当雷达开始向中央 AGC 计算机发送错误信号时,如果它不是为了智能和玛格丽特·汉密尔顿女士的勇敢工作,她将如何控制复杂系统的原理重新设计为一组独立可控、非阻塞、相互{dead-|live-|panic-attack-}-locking 的集合实体,任务将变成全世界观看的月球葬礼)。
因此,最好将关注点分开,一个用于 BR,另一个用于 WiFi,并保持主进程与它们通信,无论是使用基于 O/Snanomsg/pynng
还是 ZeroMQ /pyzmq
通信框架,都可以帮助您创建一个健壮的、非-使用可用于本地甚至非本地代理间通信的TransportClass中的一个或所有来阻塞这种分布式计算系统的元平面。ipc://
tcp://
在那里,您将及时获得所有最新读数(与远程代理如何获取它们无关),如果您的设计更接近,甚至有机会解决任何此类情况,例如错误读数或丢失数据半个世纪前,玛格丽特·汉密尔顿女士为美国宇航局展示的原则。
对所有 MIT 团队的人类英雄和关于 Art-of- (可靠的) -Code-Design的讲座的终极尊重
推荐阅读
- android - google api java客户端在使用proguard-android-optimize.txt时未传递值为0的参数
- c# - 是否有任何工具可以为 wpf (xaml) 中的复杂控件创建实时样式
- html - 未正确对齐下拉内容
- android - 在 Android Oreo 及更高版本上通过 FCM 通知唤醒我的应用
- c# - 在 Winforms 中使用 printdocument 打印时更新控件
- reactjs - 如何使用 React 制作垂直标签
- google-oauth - 如何在没有来自渐进式 Web 应用程序的持续明确用户同意的情况下使用 Google API?
- openbugs - 使用 inprod() 总结线性预测器的问题
- javascript - 如何制作根据浏览器语言或 IP 地址动态重定向到另一个文件的 index.html
- python - 如何使用 boto3 仅检索 S3 中的 last_modified 键