首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >创建多个共享数据的运行循环

创建多个共享数据的运行循环
EN

Stack Overflow用户
提问于 2016-07-28 00:50:05
回答 1查看 32关注 0票数 0

我每5秒从服务器获取一次数据,更新一个列表。此外,我还听到了按钮按下的声音。

因此,我需要的是两个独立的循环(通过GPIO拉取数据和监听Raspberry Pi上的物理按钮),并且这两个循环都需要访问共享列表。

对于一个循环,我可以使用一个带有time.sleep(5.0)的简单while = True,但是我如何同时使用两个无限循环,这两个循环都访问一个共享变量,并且不会相互阻塞?此外,按下按钮应该始终具有响应性。

我该怎么做呢?我需要线程来完成这个任务吗?

EN

回答 1

Stack Overflow用户

发布于 2016-07-28 01:12:48

所以,如果我没理解错的话,问题是你想要一个按钮检查循环,比如说,每毫秒循环一次,而你的服务器轮询循环应该每5秒运行一次。对吗?

简单的解决方案是让服务器轮询代码在更快的循环中执行,每隔5秒执行一次轮询。如果轮询很耗时,并且在轮询期间按钮检测被阻塞成为一个问题,我认为您将不得不在并行进程中运行这两个循环。然而,这使得问题变得更加复杂,特别是因为他们正在共享资源。

要在快速循环中实现5秒间隔,您可以执行以下操作

代码语言:javascript
代码运行次数:0
运行
复制
import datetime

# [...] other code

# inside fast loop
if last_poll_time - datetime.now() >= 5:
    poll_again()
    last_poll_time = datetime.now()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38618939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档