【问题标题】:Should/how can I use threading to improve a python script? [closed]我应该/如何使用线程来改进 python 脚本? [关闭]
【发布时间】:2016-05-29 03:37:27
【问题描述】:

我有一个相当简单的 python 脚本,它不断地轮询互联网资源以获取新数据。当找到新数据时,它会将其写入几个 i2c 4 字符字母数字显示器之一。

问题是在显示器上连续滚动信息的代码需要一个连续循环。只调用一个函数写入显示器然后返回轮询新数据会简单得多。目前我必须将屏幕写入合并到主要的数据收集循环中。

这是我写到显示器的方式:

message = 'DATA: 1234567'
pos = 0
while True: 
    display.clear()
    display.print_str(message[pos:pos+4])
    display.write_display()
    pos += 1
    if pos > len(message)-4:
        pos = 0
    time.sleep(0.5) `

我有哪些选择?我应该使用线程还是有另一种方式来实现可中断的后台循环?

【问题讨论】:

    标签: python multithreading python-2.7 raspberry-pi i2c


    【解决方案1】:

    您可以使用支持计时器的异步/事件驱动框架,例如 Twisted:http://www.saltycrane.com/blog/2008/10/running-functions-periodically-using-twisteds-loopingcall/ - 这会将所有内容都保存在一个线程中,并且它为您提供了用于执行 HTTP GET 的异步 API,因此您不会在以下情况下挂起显示器您的某个数据源响应缓慢。

    【讨论】:

    • 仍然意味着我必须保持显示循环与主循环,对吗?因为我有多个显示器,所以我真的很想将显示逻辑与数据分开。
    • @genepool99:不,你会在主线程中做所有的事情,但你可以将逻辑放入 Twisted 中的 Timer 调用的函数中。
    猜你喜欢
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多