python如何通过pid获取进程信息 python的process函数是什么类型?
python的process函数是什么类型?
进程Process是对各种资源管理的集合,包含对各种资源的调用、内存的管理、网络接口的调用;一个进程Process可以包含多个子进程,启动一个进程的时候会自动创建一个线程,进程里的第一个线程就是主线程(即python __name__ ‘__main__#39);
进程Process模块
对于线程操作可以用threading模块,那么对于进程的创建python同样也提供了Process模块,创建进程时需要导入该模块,语法如下:
# 导入进程模块
from multiprocessing import Process
# 创建进程
p Process(groupNone, targetNone, nameNone, args(), kwargs{})
参数介绍:
group — 参数未使用,默认值为None;
target — 表示调用对象,即子进程要执行的任务(函数名字);
args — 子进程对应函数的参数,并且类型是元组tuple;
kwargs — 子进程对应函数的参数,并且类型是字典dict,如kwargs {‘nam:Jack, ‘ag:18};
name — 子进程名称;
返回值:返回进程实例对象
三.进程Process函数介绍
其实进程Process的函数和线程threading类似,具体如下:
() — 启动进程;
2.terminate() — 强制终止进程,不会进行任何清理操作。如果该进程终止前,创建了子进程,那么该子进程在其强制结束后变为僵尸进程;如果该进程还保存了一个锁那么也将不会被释放,进而导致死锁,使用时,要注意;
_alive() — 判断某进程是否存活,存活返回True,否则False;
([timeout]) — 主线程等待子线程终止。timeout为可选择超时时间;需要强调的是,只能join住start开启的进程,而不能join住run开启的进程 ;
5.daemon — 默认值为False,如果设置为True,代表该进程为后台守护进程;当该进程的父进程终止时,该进程也随之终止;并且设置为True后,该进程不能创建子进程,设置该属性必须在start()之前;
— 进程名称;
— 进程ID标识,pid,值得注意的是:如果在start函数之前获取pid默认为None,因为进程还未创建,获取不到pid;
8.exitcod
什么是运动控制算法?
机器人的算法分为感知算法和控制算法,更进一步细分为环境感知算法 ,路径规划和行为决策算法(ai),运动控制算法,后两个也可以统称为控制算法。
环境感知算法获取环境各种数据(机器人视觉和图像识别),定位机器人的方位(slam),对于固定工位的机器人来说,环境感知算法往往不是必须的,但是,对于另一类机器人来说,比如扫地机器人,基本就是一个slam算法,行为决策和运动控制算法及其简单可以忽略。
机器人自身的运动控制算法是机器人制造厂家的研发重点,主要就是提高机器人行动的精度,稳定性和速度,这个一半靠pid伺服电机,一半靠控制算法,同样性能的pid伺服电机,好的控制算法能提高精度10倍以上,硬件反而不是难度所在,因为全世界的机器人厂家都是买同样的芯片和硬件电路;
总体来说,环境感知算法和运动控制算法是比较成熟的,也是整个机器人研究领域投入人力最多的,不断对现有的算法进行改进优化,一是因为研究已经获得突破,跟进的团队就多,二是因为90%的机器人应用领域,只需要用到这两种算法甚至只用到其中一种,行为决策算法非常简单,就是重复一个或几个简单动作;
行为决策算法或行为控制策略则是机器人应用领域的未突破的研发重点(不用的应用领域算法也不同,当然,也可以完全由人来手动控制,我们常说的人工智能,狭义点就是指这个模块),这里不是指那些简单的行为算法,比如重复动作,机器人按固定动作跳舞,无障碍或固定障碍路线行走等,这些主要是硬编码实现,不涉及到ai,复杂的行为决策算法主要有fsm,层次分析法,决策树,模糊逻辑,遗传算法ga,人工神经网络ann,以及针对具体问题的特定算法,比如路径规划等(ros里面提供了一个move-base模块,实现了很多路径规划算法),一般都用c/c 混合python来编程行为决策算法里,有解决的不错的,比如导航路径规划算法,也有难度极大的,比如避障算法,几乎所有的无人驾驶和自动驾驶研发团队都在苦苦思索避障算法,其实,避障算法的应用途广泛,在很多领域也有应用,比如无人机。避障算法是整个无人驾驶和自动驾驶行业的绊脚石,因为它决定了最后1%的安全性,而现有的vfh和dwa避障算法只能算是非常原始的起步,根本无法满足实际需求。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。