python - python 不断更新线程中的全局变量

我正在使用这个库来处理 PN5180 rfid 阅读器:

https://github.com/fservida/pyPN5180

据我了解,包含在一个名为 inventory() 的函数中,该函数返回最多 16 张检测到的卡片的列表。你把它放在一个循环中以便它更新

我希望能够在不同时间测试列表中有多少张卡片以及返回一些 ID

所以我尝试将循环函数放入线程中,但我不知道如何将其更新为全局变量以便在主程序中进行测试。

def ListeningCards():

    print("listening to card thread started")
    while True:
        global cards    
        cards = PN5180().inventory()
        cardcount = len(cards)

th1 = threading.Thread(target = ListeningCards)

th1.start()


#main progam:

while true
#etc

那么我怎样才能实现对 rfid 芯片的持续监听并将其返回到我的主程序中呢?我试过 multithreading 但也许还有其他方法?

回答1

cards 在第一次运行 ListeningCards 循环之前是未定义的。程序开始运行可能需要几毫秒。如果您的主程序在 ListeningCards 有机会第一次设置它之前访问 cards,那么您将得到一个未定义的变量。

您可能只想在程序顶部设置 cards = 0 或类似的东西,以便它具有默认的 value。

相似文章

最新文章