Python如何设置输入等待超时时间,未读取到NFC标签时执行其他操作
实现方案
你采用多进程做超时控制的思路是可行的,仅需修正多进程内存隔离导致的返回值无法传递的问题,适配NFC读取场景的代码如下:
from multiprocessing import Process, Manager def nfc_reader(return_dict): # 替换为你的实际NFC读取逻辑 id, text = reader.read() return_dict["id"] = id return_dict["text"] = text def main(): # 触发NFC读取逻辑后设置超时阈值 with Manager() as manager: return_dict = manager.dict() nfc_proc = Process(target=nfc_reader, args=(return_dict,)) nfc_proc.start() # timeout参数为等待时长,单位为秒,可按需调整 nfc_proc.join(timeout=5) if nfc_proc.is_alive(): # 超时未读到NFC标签,终止读取进程 nfc_proc.terminate() nfc_proc.join() print("NFC读取超时,执行其他逻辑") # 此处写超时后要执行的代码 else: # 读取成功,取出返回结果 nfc_id = return_dict.get("id") nfc_text = return_dict.get("text") print(f"读取成功,标签ID:{nfc_id},内容:{nfc_text}") # 此处写读取成功后要执行的代码 if __name__ == "__main__": main()
注意事项
- 可直接修改
join方法的timeout参数值调整等待阈值 - 调用
terminate结束进程后必须追加一次join调用,清理进程资源避免产生僵尸进程 - 如果你使用的NFC读卡器SDK自带支持超时参数的读取接口,优先使用原生接口,性能开销低于自行实现多进程超时控制,例如部分库支持直接调用
id, text = reader.read(timeout=5),无需额外做进程管理
内容的提问来源于stack exchange,提问作者Jonathan-0101
相关产品推荐
相关产品推荐

