进程理解

何为进程,与线程、协程的区别

在电脑上每打开一个应用,就是一个进程,比如word、腾讯视频、浏览器。但是在看视频时,需要同时播放视频和音频,这就是同一个进程的两个线程
在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最多只能分布到同一台机器的多个CPU上。

  • 线程是什么呢?
    进程的颗粒度太大,每次都要有上下的调入,保存,调出。如果我们把进程比喻为一个运行在电脑上的软件,那么一个软件的执行不可能是一条逻辑执行的,必定有多个分支和多个程序段,就好比要实现程序A,实际分成 a,b,c等多个块组合而成。那么这里具体的执行就可能变成:程序A得到CPU =》CPU加载上下文,开始执行程序A的a小段,然后执行A的b小段,然后再执行A的c小段,最后CPU保存A的上下文。这里a,b,c的执行是共享了A的上下文,CPU在执行的时候没有进行上下文切换的。这里的a,b,c就是线程,也就是说线程是共享了进程的上下文环境,的更为细小的CPU时间段。
  • 协程
    协程的特点在于是一个线程执行,那和多线程比,协程有何优势?
    极高的执行效率:因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显;
    不需要多线程的锁机制:因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。

进程的优缺点

  • 优点:
    可以并行的执行多个任务,提高运行效率,(可利用计算机多核),空间独立,数据安全,创建方便
  • 缺点
    假设你打算切换到多任务模型,可以先做1分钟语文,再切换到数学作业,做1分钟,再切换到英语,以此类推,只要切换速度足够快,这种方式就和单核CPU执行多任务是一样的了,以幼儿园小朋友的眼光来看,你就正在同时写5科作业。
    但是,切换作业是有代价的,比如从语文切到数学,要先收拾桌子上的语文书本、钢笔(这叫保存现场),然后,打开数学课本、找出圆规直尺(这叫准备新环境),才能开始做数学作业。操作系统在切换进程或者线程时也是一样的,它需要先保存当前执行的现场环境(CPU寄存器状态、内存页等),然后,把新任务的执行环境准备好(恢复上次的寄存器状态,切换内存页等),才能开始执行。这个切换过程虽然很快,但是也需要耗费时间。

给程序开启多进程

  • 安装uwsgi, pip install uwsgi --user
  • 修改配置文件 my_process.uwsgi
  • 后台启动 nohup uwsgi --ini my_process.uwsgi & (加&:后台守护进程)

查看进程相关信息

  • 查看进程端口是否被占用,如果占用,其PID:lsof -i:端口
  • 查看后台正运行的进程:top
  • 查找特点进程的相关信息:top -p pid
  • ps(ProcessStatus的缩写),列出系统当前运行的进程;-aux参数让ps命令显示更详细的参数信息,表示为ps -aux,这样,当我们查找某个程序运行的进程时,可以采用ps -aux | grep "classifier_server.py"
  • ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。如果直接用ps命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。
  • 删除某个进程:kill -9 pid

程序压测

ngrinder

参考链接

https://www.kancloud.cn/kancloud/understanding-linux-processes/52207
https://blog.csdn.net/daaikuaichuan/article/details/82951084

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值