将 RxPy 从 1.x 升级到 3.x 后订阅不起作用

Hongbo Miao

我正在使用 Python 3.7.3。

我尝试将 RxPy 从 1.6.1 (1.x) 升级到 3.0.0a3 (3.x)。

使用 RxPy 1.x 的旧代码

from rx import Observable
import psutil
import numpy as np
import pylab as plt

cpu_data = (Observable
            .interval(100)  # Each 100 milliseconds
            .map(lambda x: psutil.cpu_percent())
            .publish())
cpu_data.connect()


def monitor_cpu(npoints):
    lines, = plt.plot([], [])
    plt.xlim(0, npoints)
    plt.ylim(0, 100)

    cpu_data_window = cpu_data.buffer_with_count(npoints, 1)

    def update_plot(cpu_readings):
        lines.set_xdata(np.arange(len(cpu_readings)))
        lines.set_ydata(np.array(cpu_readings))
        plt.draw()

    alertpoints = 4
    high_cpu = (cpu_data
                .buffer_with_count(alertpoints, 1)
                .map(lambda readings: all(r > 20 for r in readings)))

    label = plt.text(1, 1, "normal")

    def update_warning(is_high):
        if is_high:
            label.set_text("high")
        else:
            label.set_text("normal")

    high_cpu.subscribe(update_warning)
    cpu_data_window.subscribe(update_plot)

    plt.show()


if __name__ == '__main__':
    monitor_cpu(10)

如果您运行代码,您可以看到实时 CPU 监控图表。

在此处输入图片说明

但是,在我安装了新的 RxPy 之后

pip3 install --pre rx

使用下面的新代码,它只显示白色,没有任何动态图表。

而且该函数update_plot实际上从未运行过。任何想法?

在此处输入图片说明

使用 RxPy 3.x 的新代码

from rx import interval, operators as op
import psutil
import numpy as np
import pylab as plt


cpu_data = interval(100).pipe(  # Each 100 milliseconds
    op.map(lambda x: psutil.cpu_percent()),
    op.publish())
cpu_data.connect()


def monitor_cpu(npoints):
    lines, = plt.plot([], [])
    plt.xlim(0, npoints)
    plt.ylim(0, 100)

    cpu_data_window = cpu_data.pipe(
        op.buffer_with_count(npoints, 1))

    def update_plot(cpu_readings):
        print('update')  # here never runs
        lines.set_xdata(np.arange(len(cpu_readings)))
        lines.set_ydata(np.array(cpu_readings))
        plt.draw()

    alertpoints = 4
    high_cpu = cpu_data.pipe(
                op.buffer_with_count(alertpoints, 1),
                op.map(lambda readings: all(r > 20 for r in readings)))

    label = plt.text(1, 1, "normal")

    def update_warning(is_high):
        if is_high:
            label.set_text("high")
        else:
            label.set_text("normal")

    high_cpu.subscribe(update_warning)
    cpu_data_window.subscribe(update_plot)

    plt.show()


if __name__ == '__main__':
    monitor_cpu(10)
迭戈·托雷斯 米兰

时间单位现在以秒为单位

cpu_data = interval(0.1).pipe(  # Each 100 milliseconds
    op.map(lambda x: psutil.cpu_percent()),
    op.publish())
cpu_data.connect()

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TYPO3-升级到9.5.x(RSA身份验证)后,后端登录不起作用

来自分类Dev

升级到python 3.x

来自分类Dev

将Tensorflow 1.x代码升级到Tensorflow 2.x代码

来自分类Dev

当我将OS X升级到10.9时,我的applescript不再起作用

来自分类Dev

当我将OS X升级到10.9时,我的applescript不再起作用

来自分类Dev

升级到OS X Yosemite后,pip不起作用

来自分类Dev

升级到16.04后x11vnc自动启动不起作用

来自分类Dev

升级到Rails 4.x后,Ruby on Rails Web服务不起作用

来自分类Dev

如何将Yii 1.x升级到Yii 2.0

来自分类Dev

由于缺少FontKey和PdfFont,如何将3.x代码升级到6.3.0

来自分类Dev

将Jersey客户端1.x升级到2.x时UriBuilder上的AbstractMethodError

来自分类Dev

将解析服务器 2.x 升级到 3.x 与旧代码库兼容

来自分类Dev

将 Cassandra 1.2.9 升级到 2.0.x

来自分类Dev

将 angular 从 2.x 升级到 4.x 后,类型“People”上不存在属性“emit”

来自分类Dev

升级到OS X Mavericks后Drush坏了

来自分类Dev

X升级到Fedora 23后损坏

来自分类Dev

将Xcode4.x升级到Xcode5.0后,情节提要板图形消失了

来自分类Dev

循环(1 + x + x ** 2 + x ** 3 + x ** 4 .... n)不起作用

来自分类Dev

将Apache httpcomponents从4.1.x升级到4.3.x

来自分类Dev

React Navigation将4.x升级到5.x

来自分类Dev

从Express 3.x升级到Express 4.x-Mongo Session Store

来自分类Dev

在为匹配的Ubuntu版本添加相应的PPA后,为什么vlc 2.x没有升级到PPA 3.x版本?

来自分类Dev

升级到OS X Mavericks后,X11 / XQuartz不会自动启动吗?

来自分类Dev

升级到Alamofire 5.x

来自分类Dev

将 RAM 从 20GB(1x 4GB、1x 16GB)升级到 32GB(2x 16GB)

来自分类Dev

OS X Mavericks如何将PHP 5.4升级到最新的5.5+?

来自分类Dev

如何将jwplayer 5升级到6.x

来自分类Dev

如何将iOS App预览视频升级到1080 x 1920?

来自分类Dev

将Concrete5从5.5.2.1升级到5.6.x的问题

Related 相关文章

  1. 1

    TYPO3-升级到9.5.x(RSA身份验证)后,后端登录不起作用

  2. 2

    升级到python 3.x

  3. 3

    将Tensorflow 1.x代码升级到Tensorflow 2.x代码

  4. 4

    当我将OS X升级到10.9时,我的applescript不再起作用

  5. 5

    当我将OS X升级到10.9时,我的applescript不再起作用

  6. 6

    升级到OS X Yosemite后,pip不起作用

  7. 7

    升级到16.04后x11vnc自动启动不起作用

  8. 8

    升级到Rails 4.x后,Ruby on Rails Web服务不起作用

  9. 9

    如何将Yii 1.x升级到Yii 2.0

  10. 10

    由于缺少FontKey和PdfFont,如何将3.x代码升级到6.3.0

  11. 11

    将Jersey客户端1.x升级到2.x时UriBuilder上的AbstractMethodError

  12. 12

    将解析服务器 2.x 升级到 3.x 与旧代码库兼容

  13. 13

    将 Cassandra 1.2.9 升级到 2.0.x

  14. 14

    将 angular 从 2.x 升级到 4.x 后,类型“People”上不存在属性“emit”

  15. 15

    升级到OS X Mavericks后Drush坏了

  16. 16

    X升级到Fedora 23后损坏

  17. 17

    将Xcode4.x升级到Xcode5.0后,情节提要板图形消失了

  18. 18

    循环(1 + x + x ** 2 + x ** 3 + x ** 4 .... n)不起作用

  19. 19

    将Apache httpcomponents从4.1.x升级到4.3.x

  20. 20

    React Navigation将4.x升级到5.x

  21. 21

    从Express 3.x升级到Express 4.x-Mongo Session Store

  22. 22

    在为匹配的Ubuntu版本添加相应的PPA后,为什么vlc 2.x没有升级到PPA 3.x版本?

  23. 23

    升级到OS X Mavericks后,X11 / XQuartz不会自动启动吗?

  24. 24

    升级到Alamofire 5.x

  25. 25

    将 RAM 从 20GB(1x 4GB、1x 16GB)升级到 32GB(2x 16GB)

  26. 26

    OS X Mavericks如何将PHP 5.4升级到最新的5.5+?

  27. 27

    如何将jwplayer 5升级到6.x

  28. 28

    如何将iOS App预览视频升级到1080 x 1920?

  29. 29

    将Concrete5从5.5.2.1升级到5.6.x的问题

热门标签

归档