比较PCL使用CPU和Nvidia GPU计算效率问题
前言前篇文章提到,对比PCL使用CPU和Nvidia GPU进行欧式聚类发现,尴尬发现使用CPU的计算效率反而更高。 本篇文章探讨一下原因。 正文观察代码可以发现,代码中使用CPU欧式聚类的搜索方法选用的是kdtree,使用GPU欧式聚类的搜索方法选用的是octree。感觉有可能是这里的原因导致CP ...
阅读更多
PCL-CUDA版本编译安装
前言pcl是一个c++编写的点云数据处理库。 大量点云数据处理通常需要消耗CPU大量时间,而使用cuda可以加速计算。 目前pcl最新版本(1.14)支持cuda计算加速(尽管还不完善),但是需要额外的步骤进行编译安装。 如果要编译安装的是PCL普通版本(即只使用CPU进行计算的版本)比较简单,在此 ...
阅读更多
协程,从yield说起
Ref: 《Fluent Python》 第16章 协程 协程是指一个过程,这个过程与调用方协作,产出由调用方提供的值。 def simple_coroutine(a): # 协程用生成器函数定义,里面有yield print(f'-> Started: a = { ...
阅读更多
Python 并发编程小结1
KeyWords: threading.Thread threading.Event 使用队列queue.Queue,task_down()、join()实现线程通信 Lock的上下文管理、RLock、信号量Semaphore 死锁 创建对其他线程不可见的线程状态:threading.local ...
阅读更多
Fluent Python笔记持续整理
后面几节没整理;没有目录;一些重要章节不是很全,仅仅是介绍。待拆分Ref:https://www.52pojie.cn/thread-1816710-1-1.html 在Python中,如果一个类定义了__getitem__方法,那么该类的对象可以像序列(如列表、字符串等)一样使用索引运算符[] ...
阅读更多
Python星号用法小结
1乘法和乘方 2用在函数定义的参数时, def func(a, *b, **c): ... 在函数的参数中,当以标记一个参数时,表明这个参数是可变参数,具体来讲,用单星号*标记参数,表示其是可变的位置参数,并且以元组的形式将外部的多个位置参数返回给该参数变量,如果用双星号**标记,表示其看是可变的 ...
阅读更多
Python闭包与装饰器总结1
装饰器基础装饰器是可调用的对象,其参数是另一个函数(被装饰的函数)。 装饰器的一个关键特性是,它们在被装饰的函数定义之后立即运行。这通常是在导入时 (即 Python 加载模块时) ‍ 变量作用域规则对比代码 b = 3def func(a): print(a) print(b)func ...
阅读更多
Kruskal算法与力扣1135
本文介绍图的最小生成树算法Kruskal 算法。 阅读之前需要先了解 图和树数据结构 加权图、生成树、最小生成树 Kruskal 算法基本思想 在Kruskal 算法中,需要保证每次新加入的边不会让树变成图,即不能让树包含环。那么 Union-Find 算法就是帮你干这个事儿的。 像下面这样添加 ...
阅读更多
Union-Find并查集算法(Python实现)
这是并查集算法的Python实现: class UF: ''' 并查集算法 ''' def __init__(self, n) -> None: ''' ...
阅读更多
subprocess执行java命令残留进程解决
问题简述 需求是通过Python执行命令java -java springboot-demo.jar 于是,我使用subprocess.Popen()来启停。但是我发现在关闭子进程后,java进程并没有正确关闭。 这是由于上面的方法实际原理是另外开启一个cmd命令来运行java -jar命令,后面用 ...
阅读更多