You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:18:02