linux查看进程属于哪个程序

Linux系统看进程哪个程序在跑,就这几种方法:
1 . 用ps-f命令 这个命令会把进程全信息都列出来,CMD这一列直接就标着程序路径或命令名。
比如你看这个输出: UID PID PPID CSTIMETTY TIME CMD root 1 2 3 4 1 01 0 1 0:00 ? 00:00:01 /usr/bin/python3 /app/script.py CMD列那个/usr/bin/python3 /app/script.py,就说明这个进程是用Python解释器跑script.py这个程序的。

2 . 用pstree-a命令 这个命令能把进程都画成树状图,程序名一般显示在进程名后面括号里。
比如输出长这样: systemd └─nginx(nginx) └─python3 /app/script.py 看到nginx和python3 /app/script.py,就知道这两个都是程序名。

3 . 用top命令 这个命令启动后按c键,COMMAND列会显示完整命令或程序路径。
比如按c键后输出: PID USER PR NI VIRT RES SHR S TIME%CPU%MEM TIME+ COMMAND 1 2 3 4 root 2 00 1 0000 5 000 2 000 R 5 .0 0.1 1 0:00.01 python3 /app/script.py COMMAND列那个python3 /app/script.py,直接就告诉你进程在跑哪个程序。

要注意几个情况:
如果程序是用解释器跑的(比如Python、Bash),CMD或COMMAND列可能显示解释器路径加脚本名(比如python3 script.py)。

有些系统进程可能只显示二进制路径(比如/usr/lib/systemd/systemd),这时候得用file命令再看看: file /usr/lib/systemd/systemd
如果想知道程序具体在哪个文件里,可以用这个命令: ls -l /proc/1 2 3 4 /exe (把1 2 3 4 换成实际进程号)
这几个方法够用,看情况选一个就行。

python中的进程-实战部分

直接结论:multiprocessing用多进程解决多核CPU利用问题。

多线程不行。
用multiprocessing。

多核CPU。
用多进程。

import multiprocessing。

multiprocessing.Process()创建进程。

target=函数名。
args=参数元组。

kwargs=字典参数。

p.start()启动进程。

p.join()等待进程结束。

p.terminate()强制结束进程。

注意:Windows系统下Process要放if __name__ == '__main__':里。

进程间无共享状态。

一篇文章带你深度解析Python线程和进程

哎哟,说起Python线程模块,这可是个老生常谈的话题了。
咱们先得弄明白,线程和进程这俩玩意儿到底是个啥。

进程啊,简单来说,就是操作系统分配资源的基本单位。
打个比方,你开一辆车,手和脚要同时操作,这就是一个进程。
进程有自己独立的内存空间,不同进程之间要通过通信来交互。
不过进程这东西比较重,切换起来开销大,但安全性相对较高。

再来说说线程,它是进程的一个实体,是CPU调度和分派的基本单位。
线程比进程小,基本上不拥有系统资源,但可以共享进程的资源。
线程间通信主要通过共享内存,切换速度快,但稳定性相对较差。

说到多任务,这可是现代操作系统的标配。
比如你一边上网,一边听音乐,一边写作业,这就是多任务。
单核CPU通过快速切换任务,让我们感觉像是在同时执行。

并行和并发,这两个词儿要分清楚。
并行指的是多个事件在同一时刻发生,比如多核CPU同时执行多个任务。
并发呢,是指一个物理CPU在多个程序或线程之间多路复用,提高效率。

Python的threading模块,这是咱们实现多线程编程的好帮手。
threading模块提供了创建和管理线程的功能。

创建线程有两种方法,一种是直接创建,另一种是通过继承threading.Thread类来创建。

进程和线程,它们都能实现多任务,但资源共享方面有所不同。
进程不能共享资源,而线程可以共享所在进程的资源。

说到GIL,这是CPython实现中的一个概念,它确保任何时候都只有一个Python线程执行。
虽然GIL限制了多线程的性能,但在IO密集型任务中,多线程仍然有优势。

锁机制,比如Lock和RLock,可以保证数据的安全性。
不过,使用锁的时候要小心,否则会出现死锁的情况。

Python的queue模块提供了线程间通信的机制,你可以通过队列来实现生产者和消费者模式。

协程,这可是Python中实现多任务的一种方式,比线程更轻量级。
greenlet和gevent模块可以帮助我们更方便地使用协程。

最后,如果你对协程感兴趣,可以看看宋宋的文章,里面有详细的介绍。
希望这篇教程能对你有所帮助!