在Python中与循环一起运行单独的函数

克里斯

我正在尝试使用Raspberry PI在LED标牌上显示RSS数据。我的代码基于首次购买该标志时发现的脚本。这是一个简单的脚本,可让您向标牌发送消息和颜色,它将滚动直到键盘中断为止。

sudo python scroll "Hello World" 1 #red
sudo python scroll "Hello World" 2 #green
sudo python scroll "Hello World" 3 #red and green (orange)

此脚本与我正在处理的脚本之间的区别在于,所有数据都在循环之前处理,然后将showmatrix()函数用于在屏幕上显示字符串,并使用shiftmatrix()函数来处理滚动图像。

为了不断下载RSS数据,我将以下代码放入循环中:

#grab emails
newmails = int(feedparser.parse("https://" + USERNAME + ":" + PASSWORD +"@mail.google.com/gmail/feed/atom")["feed"]["fullcount"])

textinput =  "You have " + str(newmails) + " new emails"

# append extra characters to text input to allow for wrap-around
textinput+="  ::  "

然后,我使用与以前相同的功能在标牌上显示此数据:

# Continually output to the display until Ctrl-C
    #

# loop around each column in the dotarray
for col in range(len(dotarray[0])):
    for row in range(8):
        # copy the current dotarray column values to the first column in the matrix
        matrix[row][0]=(dotarray[row][col])
    # now that we have updated the matrix lets show it
    showmatrix()
    # shift the matrix left ready for the next column
    shiftmatrix()

由于RSS数据下载需要花费很长时间(至少一秒钟),因此该时间段内不会运行输出循环,并且符号会变为空白。有没有一种可以同时运行feedparser函数的方式,所以没有延迟?

我认为多线程是前进的方向,对吗?我查看了couroutines,但那无济于事。

tomer.z

是的,os.fork(),可以使函数在其他进程中运行,也可以使线程模块在其他线程中运行。如果函数使用全局变量,则需要使用线程模块并使其在另一个线程中运行,如果我不建议这样做,则资源浪费较少(假设函数未分配大量内存或以其他方式使用大量资源) ),您的代码应如下所示:

class displayThread(threading.Thread)
    *init function if you need to pass info to the tread, otherwise dont write one but if you do
     make sure to call Thread.__init__() first in your function*
    def run():  //Overrides the run function
        *display what you want on the display*

class downloadThread(threading.Thread)
    *init function if you need to pass info to the tread, otherwise dont write one but if you do
     make sure to call Thread.__init__() first in your function*
    def run():  //Overrides the run function
        *download what you want*

并且您的主脚本应如下所示:

thread1 = displayThread
thread2 = downloadThread
thread1.start()
thread2.start()
thread2.join()   //waits for download to finish while the display in being updated by the other thread

如果要停止显示线程(假设它永远存在),则必须添加以下内容:

os.kill(thread1.getpid(), signal.SIGKILL)

.join()之后,然后对下载的信息进行所需的操作。

多进程版本非常相似,如果遇到问题,您应该能够从我的示例和os.fork()文档中了解如何制作它-让我知道,我将对其进行编辑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使函数仅与每个克隆的 div 单独运行,而不是与原始 div 一起运行

来自分类Dev

一起运行多个jquery函数

来自分类Dev

如何在Ruby中与系统一起运行.zshrc中定义的函数?

来自分类Dev

pymouse没有在python中与opencv一起运行

来自分类Dev

GUI与tkinter一起运行时在python中在后台播放声音

来自分类Dev

Bash 脚本不会与 Python 中的子进程一起运行

来自分类Dev

C、代码一起运行

来自分类Dev

努力使Makefile与单独的头文件和源文件目录一起运行

来自分类Dev

当reloader = True时,Python计时器函数与bottle.py一起运行两次

来自分类Dev

当reloader = True时,Python计时器函数与bottle.py一起运行两次

来自分类Dev

一起运行时,代码接收功能测试失败,而在Laravel中单独运行时,代码测试功能测试成功

来自分类Dev

与命令循环一起运行 boost::asio 异步服务器

来自分类Dev

当与构建任务一起运行时,Android connectedCheck任务失败,但单独运行时,它不会失败

来自分类Dev

如何在Python 3中获取热键(Ctrl + N)与子进程(VLC)一起运行

来自分类Dev

析构函数与类的每个方法调用一起运行

来自分类Dev

未与 Firebase 一起运行观察者单事件函数

来自分类Dev

Python不会与Task Scheduler一起运行,但是会正常运行吗?

来自分类Dev

使Python 2.7代码与Python 2.6一起运行

来自分类Dev

Scrapy(Python)与cron一起运行时抛出ImportError

来自分类Dev

Ansible:剧本未与python3一起运行

来自分类Dev

Python Flask未与docker-compose一起运行

来自分类Dev

Chrome中与NPAPI一起运行的Java Applet的替代方案

来自分类Dev

jQuery不在外部js文件中与rails一起运行

来自分类Dev

如何在Amazon EC2中一起运行Node和apache?

来自分类Dev

如何在与工匠一起运行的laravel 5中包含CSS?

来自分类Dev

如何在JAVA中让Animation与KeyBoard输入一起运行?

来自分类Dev

无法使复选框与Ruby中的条件语句一起运行

来自分类Dev

WSL2是在虚拟机中还是与Windows内核一起运行Linux?

来自分类Dev

无法使Apache在Lubuntu中与php5一起运行

Related 相关文章

  1. 1

    如何使函数仅与每个克隆的 div 单独运行,而不是与原始 div 一起运行

  2. 2

    一起运行多个jquery函数

  3. 3

    如何在Ruby中与系统一起运行.zshrc中定义的函数?

  4. 4

    pymouse没有在python中与opencv一起运行

  5. 5

    GUI与tkinter一起运行时在python中在后台播放声音

  6. 6

    Bash 脚本不会与 Python 中的子进程一起运行

  7. 7

    C、代码一起运行

  8. 8

    努力使Makefile与单独的头文件和源文件目录一起运行

  9. 9

    当reloader = True时,Python计时器函数与bottle.py一起运行两次

  10. 10

    当reloader = True时,Python计时器函数与bottle.py一起运行两次

  11. 11

    一起运行时,代码接收功能测试失败,而在Laravel中单独运行时,代码测试功能测试成功

  12. 12

    与命令循环一起运行 boost::asio 异步服务器

  13. 13

    当与构建任务一起运行时,Android connectedCheck任务失败,但单独运行时,它不会失败

  14. 14

    如何在Python 3中获取热键(Ctrl + N)与子进程(VLC)一起运行

  15. 15

    析构函数与类的每个方法调用一起运行

  16. 16

    未与 Firebase 一起运行观察者单事件函数

  17. 17

    Python不会与Task Scheduler一起运行,但是会正常运行吗?

  18. 18

    使Python 2.7代码与Python 2.6一起运行

  19. 19

    Scrapy(Python)与cron一起运行时抛出ImportError

  20. 20

    Ansible:剧本未与python3一起运行

  21. 21

    Python Flask未与docker-compose一起运行

  22. 22

    Chrome中与NPAPI一起运行的Java Applet的替代方案

  23. 23

    jQuery不在外部js文件中与rails一起运行

  24. 24

    如何在Amazon EC2中一起运行Node和apache?

  25. 25

    如何在与工匠一起运行的laravel 5中包含CSS?

  26. 26

    如何在JAVA中让Animation与KeyBoard输入一起运行?

  27. 27

    无法使复选框与Ruby中的条件语句一起运行

  28. 28

    WSL2是在虚拟机中还是与Windows内核一起运行Linux?

  29. 29

    无法使Apache在Lubuntu中与php5一起运行

热门标签

归档