1_丁来强_开源AIOps数据中台搭建与Python的作用数据采集、数据中台、智能算法、⾃自动化等 AIOps系统(常规层次) AIOps系统架构 • 场景应⽤用 • 智能监测系统 • ⾃自动化系统 • ⼯工单知识库 • 数据湖 • 监控⽣生态系统 • 数据源 数据的摄取挑战 • 各种来源: • SaaS、多云、容器器、微服务、主机、应⽤用等 • 各种数据样式: • Log、Tracking、Event;Metrics、IoT 用 • ⽇日志类数据⽅方案 • 指标类时序数据⽅方案 • 其他OLAP选择 • AI增强⽅方案 数据源与监控 - 容器器化架构为例例 物理理主机/VM层监控 容器器POD指标监控 容器器CaaS层资源监控 应⽤用层性能监控 应⽤用层 ⽇日志 指标监控 prometheus + grafana + thanos elastic stack, TICK stack, Open Open Telemetry Zabbix, statsd, collectd Nagios, fluentd ⼏几个监控⽅方案作为中台的能⼒力力⽐比较 ⽅方案⽐比较 Prometheus Stack Elastic Stask TICK Stack 摄取 存储 指标 ⽀支持 ⽀支持(效率⼀一般) ⽀支持 ⽇日志 初级 较好 ⽆无 ⽂文本 ⽆无 全⾯面 ⽆无 分析 流式 ⽆无 不不⽀支持0 码力 | 48 页 | 17.54 MB | 1 年前3
Python3 基础教程 - 廖雪峰打开 Mac OS X 的 Activity Monitor,或者 Windows 的 Task Manager,都 可以监控某个进程的 CPU 使用率。 我们可以监控到一个死循环线程会 100%占用一个 CPU。 如果有两个死循环线程,在多核 CPU 中,可以监控到会占用 200%的 CPU,也就是占用两个 CPU 核心。 要想把 N 核 CPU 的核心全部跑满,就必须启动 N 个死循环线程。 cpu_count()): t = threading.Thread(target=loop) t.start() 启动与 CPU 核心数量相同的 N 个线程,在 4 核 CPU 上可以监控到 CPU 占用率仅有 102%,也就是仅使用了一核。 但是用 C、C++或 Java 来改写相同的死循环,直接可以把全部核心跑满, 4 核就跑到 400%,8 核就跑到 800%,为什么 Python 多地方在用,所以,有必要了解如何操作 XML。 DOM vs SAX 操作 XML 有两种方法:DOM 和 SAX。DOM 会把整个 XML 读入内存, 解析为树,因此占用内存大,解析慢,优点是可以任意遍历树的节点。 SAX 是流模式,边读边解析,占用内存小,解析快,缺点是我们需要自 己处理事件。 正常情况下,优先考虑 SAX,因为 DOM 实在太占内存。 在 Python 中使用 SAX 解析 XML0 码力 | 531 页 | 5.15 MB | 1 年前3
Python 标准库参考指南 3.13 抽象文法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1909 32.1.2 节点类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1912 32.1.3 3.13.0 堆是一种二叉树,其中每个上级节点的值都小于等于它的任意子节点。我们将这一条件称为堆的不变性。 这个实现使用了数组,其中对于所有从 0 开始计数的 k 都有 heap[k] <= heap[2*k+1] 且 heap[k] <= heap[2*k+2]。为了便于比较,不存在的元素将被视为无穷大。堆最有趣的特性在于其最小的元素始终 位于根节点 heap[0]。 这个 API 与教材的 与教材的堆算法实现有所不同,具体区别有两方面:(a)我们使用了从零开始的索引。这使得 节点和其孩子节点索引之间的关系不太直观但更加适合,因为 Python 使用从零开始的索引。(b)我们的 pop 方法返回最小的项而不是最大的项(这在教材中称为“最小堆”;而“最大堆”在教材中更为常见, 因为它更适用于原地排序)。 基于这两方面,把堆看作原生的 Python list 也没什么奇怪的:heap[0] 表示最小的元素,同时0 码力 | 2246 页 | 11.74 MB | 10 月前3
Python 标准库参考指南 3.13 抽象文法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1905 32.1.2 节点类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1908 32.1.3 3.13.0 堆是一种二叉树,其中每个上级节点的值都小于等于它的任意子节点。我们将这一条件称为堆的不变性。 这个实现使用了数组,其中对于所有从 0 开始计数的 k 都有 heap[k] <= heap[2*k+1] 且 heap[k] <= heap[2*k+2]。为了便于比较,不存在的元素将被视为无穷大。堆最有趣的特性在于其最小的元素始终 位于根节点 heap[0]。 这个 API 与教材的 与教材的堆算法实现有所不同,具体区别有两方面:(a)我们使用了从零开始的索引。这使得 节点和其孩子节点索引之间的关系不太直观但更加适合,因为 Python 使用从零开始的索引。(b)我们的 pop 方法返回最小的项而不是最大的项(这在教材中称为“最小堆”;而“最大堆”在教材中更为常见, 因为它更适用于原地排序)。 基于这两方面,把堆看作原生的 Python list 也没什么奇怪的:heap[0] 表示最小的元素,同时0 码力 | 2242 页 | 11.73 MB | 10 月前3
Python 标准库参考指南 3.12 抽象文法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1877 32.1.2 节点类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1880 32.1.3 3.12.7 堆是一种二叉树,其中每个上级节点的值都小于等于它的任意子节点。我们将这一条件称为堆的不变性。 这个实现使用了数组,其中对于所有从 0 开始计数的 k 都有 heap[k] <= heap[2*k+1] 且 heap[k] <= heap[2*k+2]。为了便于比较,不存在的元素将被视为无穷大。堆最有趣的特性在于其最小的元素始终 位于根节点 heap[0]。 这个 API 与教材的 与教材的堆算法实现有所不同,具体区别有两方面:(a)我们使用了从零开始的索引。这使得 节点和其孩子节点索引之间的关系不太直观但更加适合,因为 Python 使用从零开始的索引。(b)我们的 pop 方法返回最小的项而不是最大的项(这在教材中称为“最小堆”;而“最大堆”在教材中更为常见, 因为它更适用于原地排序)。 基于这两方面,把堆看作原生的 Python list 也没什么奇怪的:heap[0] 表示最小的元素,同时0 码力 | 2253 页 | 11.81 MB | 10 月前3
Python 标准库参考指南 3.12 抽象文法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1877 32.1.2 节点类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1880 32.1.3 3.12.7 堆是一种二叉树,其中每个上级节点的值都小于等于它的任意子节点。我们将这一条件称为堆的不变性。 这个实现使用了数组,其中对于所有从 0 开始计数的 k 都有 heap[k] <= heap[2*k+1] 且 heap[k] <= heap[2*k+2]。为了便于比较,不存在的元素将被视为无穷大。堆最有趣的特性在于其最小的元素始终 位于根节点 heap[0]。 这个 API 与教材的 与教材的堆算法实现有所不同,具体区别有两方面:(a)我们使用了从零开始的索引。这使得 节点和其孩子节点索引之间的关系不太直观但更加适合,因为 Python 使用从零开始的索引。(b)我们的 pop 方法返回最小的项而不是最大的项(这在教材中称为“最小堆”;而“最大堆”在教材中更为常见, 因为它更适用于原地排序)。 基于这两方面,把堆看作原生的 Python list 也没什么奇怪的:heap[0] 表示最小的元素,同时0 码力 | 2253 页 | 11.81 MB | 10 月前3
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查 为什么编译器从字节码开始着手? 栈机(stack machine)语义的优化问题? Julia后端和Cython后端的差别? 栈机到基于寄存器(register based)的 语义,控制流分析,SSA 和 Φ 节点和 栈机语义消除。 Cython JIT 基础架构。 为什么编译器从字节码开始着手? 因为运行时一旦开始你是拿不到源代码的。 如果你拿到了,那么你做了“脏”的操作(inspect库)。 我 进行编译,生成jit函数的几个method。 同时,每次编译会根据已有的所有methods,生成一 个新的method查找函数。 演示。 JIT 函数 JIT 编译器 Base Method 含监控器 参数组(int, int) 参数组(float, int) 方法查找函数 (是一个C函数) 对应 JIT 函数的调用记录器 反 馈 调 用 记 录 每N次被反馈唤醒一次JIT编译器0 码力 | 43 页 | 10.71 MB | 1 年前3
Python 标准库参考指南 3.7.13 模块和 PEP 3119。 8.5 heapq --- 堆队列算法 源码:Lib/heapq.py 这个模块提供了堆队列算法的实现,也称为优先队列算法。 堆是一个二叉树,它的每个父节点的值都只会小于或等于所有孩子节点(的值)。它使用了数组来实现:从 零开始计数,对于所有的 k ,都有 heap[k] <= heap[2*k+1] 和 heap[k] <= heap[2*k+2]。为了便 于比较, 于比较,不存在的元素被认为是无限大。堆最有趣的特性在于最小的元素总是在根结点:heap[0]。 这个 API 与教材中堆算法的实现不太一样,在于两方面:(a)我们使用了基于零开始的索引。这使得节点和 其孩子节点之间的索引关系不太直观,但是由于 Python 使用了从零开始的索引,所以这样做更加合适。(b) 我们的 pop 方法返回了最小的元素,而不是最大的(这在教材中叫做“最小堆”;而“最大堆”在课本中更加 、Underflow 以及FloatOperation 。 对于每个信号,都有一个标志和一个陷阱启动器。遇到信号时,其标志设置为 1 ,然后,如果陷阱启用器设 置为 1 ,则引发异常。标志是粘性的,因此用户需要在监控计算之前重置它们。 参见: • IBM 的通用十进制算术规范描述 The General Decimal Arithmetic Specification。 9.4.1 快速入门教程 通常使用0 码力 | 1961 页 | 9.14 MB | 10 月前3
Python 标准库参考指南 3.7.13 模块和 PEP 3119。 8.5 heapq --- 堆队列算法 源码:Lib/heapq.py 这个模块提供了堆队列算法的实现,也称为优先队列算法。 堆是一个二叉树,它的每个父节点的值都只会小于或等于所有孩子节点(的值)。它使用了数组来实现: 从零开始计数,对于所有的 k ,都有 heap[k] <= heap[2*k+1] 和 heap[k] <= heap[2*k+2]。为 了便于比较, 了便于比较,不存在的元素被认为是无限大。堆最有趣的特性在于最小的元素总是在根结点:heap[0]。 这个 API 与教材中堆算法的实现不太一样,在于两方面:(a)我们使用了基于零开始的索引。这使得节 点和其孩子节点之间的索引关系不太直观,但是由于 Python 使用了从零开始的索引,所以这样做更加合 适。(b)我们的 pop 方法返回了最小的元素,而不是最大的(这在教材中叫做“最小堆”;而“最大堆” 在课本中更加常见,因为它更加适用于原地排序)。 、Underflow 以及FloatOperation 。 对于每个信号,都有一个标志和一个陷阱启动器。遇到信号时,其标志设置为 1 ,然后,如果陷阱启用 器设置为 1 ,则引发异常。标志是粘性的,因此用户需要在监控计算之前重置它们。 参见: • IBM 的通用十进制算术规范描述 The General Decimal Arithmetic Specification。 9.4.1 快速入门教程 通常使用0 码力 | 1846 页 | 9.09 MB | 10 月前3
Python 标准库参考指南 3.11.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1981 xx 32.1.2 节点类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1984 32 Reference, 发行版本 3.11.10 8.6 heapq --- 堆队列算法 源码:Lib/heapq.py 这个模块实现了堆队列算法,即优先队列算法。 堆是一棵完全二叉树,其中每个节点的值都小于等于其各个子节点的值。这个使用数组的实现,索引从 0 开 始,且对所有的 k 都有 heap[k] <= heap[2*k+1] 和 heap[k] <= heap[2*k+2]。比较时不存在的元 素被 素被认为是无限大。堆最有趣的特性在于最小的元素总是在根结点:heap[0]。 这个 API 与教材的堆算法实现有所不同,具体区别有两方面:(a)我们使用了从零开始的索引。这使得节点 和其孩子节点索引之间的关系不太直观但更加适合,因为 Python 使用从零开始的索引。(b)我们的 pop 方法 返回最小的项而不是最大的项(这在教材中称为“最小堆”;而“最大堆”在教材中更为常见,因为它更适用 于原地排序)。0 码力 | 2399 页 | 11.19 MB | 10 月前3
共 43 条
- 1
- 2
- 3
- 4
- 5













