Python程序员都知道的入门知识の九

目录:
1. 多线程练习
2. psutil初识
3. 小知识

目录【Python程序员都知道的入门知识】


python自学之路

1. 多线程练习

for循环启动五条线程,打印当前处于活跃状态的线程数量:


Paste_Image.png

问题出现了,明明for循环五次,加上一条主线程也就才六条线程,怎么打印出来的却是 <a>''current has 7 threads''</a>,多出一条是什么?
遍历出所有线程(如下图),可以看出多了一条SockThread 守护线程。


Paste_Image.png

那么什么是SockThread,这个线程又是怎么出现的?
待续。。。
在追查过程中发现了一个模块:psutil

2. psutil初识

2.1. psutil是什么?

来看看官方说明:

Paste_Image.png

psutil,即process and system utilities。
是一个用于检索当前正在运行的进程和系统资源使用情况(包括:CPU,内存,磁盘、网络等)的跨平台库。
目前在github上有超过4200个开源工程中使用到了psutil
官网中推荐了这个:Sample,可以参考着练一练。

2.2. 安装

我是在Windows 64下装了python2.7 ,所以我下载安装了:
psutil-5.0.1.win-amd64-py2.7.exe
psutil官方下载地址
psutil官方文档

2.3. 与系统相关的函数

2.3.1. CPU

处理器时间
1、psutil.cpu_times(percpu = False)
返回一个名为scputimes的元组
2、psutil.cpu_times(percpu = True)
返回一个名为scputimes的元组列表(每个CPU处理器的各种模式的时间)

实际返回的(无论是单个元组还是元组列表中的)元素也跟系统有关。以下是通有元素说明:

  • user:处理器处理用户(Linux下包括游客)所用的时间
  • system:处理器处理系统内核所用的时间
  • idle:什么都不做所花的事

与平台相关的元素:

  • nice 【UNIX】
  • iowait 【Linux】
  • irq【Linux,BSD】
  • softirq 【Linux】
  • steal 【Linux 2.6.11+】
  • guest【Linux 2.6.24+】
  • guest_nice 【Linux 3.2.0+】
  • interrupt 【Windows】
  • dpc 【Windows】

Paste_Image.png

处理器使用频率
1、psutil.cpu_percent(interval=None, percpu=False)
2、psutil.cpu_times_percent(interval=None, percpu=False)
处理器数量
psutil.cpu_count(logical=True)
处理器数据
psutil.cpu_stats()

Paste_Image.png

2.3.2. Memory

虚拟内存
psutil.virtual_memory()
交换内存
psutil.swap_memory()

Paste_Image.png

2.3.3. Disks

磁盘分配
psutil.disk_partitions(all = False)
磁盘使用情况
psutil.disk_usage(path)
磁盘读写计数器
psutil.disk_io_counters(perdisk = False)

Paste_Image.png

2.3.4. Network

网络读写计数器
psutil.net_io_counters(pernic = False)
网络连接
psutil.net_connections(kind = 'inet')

Paste_Image.png

网络适配器关联的地址
psutil.net_if_addrs()
网络适配器数据
psutil.net_if_stats()

Paste_Image.png

2.3.5. 其他系统信息

引导时间
psutil.boot_time()
系统当前用户
psutil.users()

Paste_Image.png

2.4. psutil操作进程

2.4.1. 函数

正在运行的进程ID列表
psutil.pids()(为避免出现竞争条件,不推荐使用)
根据进程ID判断进程是否在运行列表中
psutil.pid_exists(pid)
进程ID迭代器
psutil.process_iter()
等待列表进程结束
psutil.wait_procs(procs,timeout = none , callback = none)

2.4.2. 进程异常类

异常基类
class psutil.Error
无此进程
class psutil.NoSuchProcess(pid ,name = none ,msg = none )
僵尸进程
class psutil.ZombieProcess(pid ,name = none ,ppid =none , msg = none)
拒绝访问
class psutil.AccessDenied(pid = none , name = none ,msg = none)
超时时间已到
class psutil.TimeoutExpired(second , pid =none ,name = none ,msg = none)

2.4.3. 进程类Process

class psutil.Process(pid = none)
函数:(详情移步:psutil.processes

  • oneshot()
  • pid
  • ppid()
  • name()
  • exe()
  • cmdline()
  • environ()
  • create_time()
  • ad_dict(attrs = none ,ad_value = none)
  • parent()
  • status()
  • cwd()
  • username()
  • uids()
  • gids()
  • terminal()
  • nice(value = none)
  • idnice(ioclass = none ,value = none)
  • rlimit(resource , limits = none)
  • io_counters()
  • num_ctx_switches()
  • num_fds()
  • num_handles()
  • num_threads()
  • threads()
  • cpu_times()
  • cpu_percent(interval = none)
  • cpu_affinity(cpus = none)
  • memory_info()
  • memory_ex()
  • memory_full_info()
  • memory_percent(memtype = 'rss')
  • memory_maps(groups =Ture)
  • children(recursive = False)
  • open_files()
  • connections(kind = 'inet')
  • is_running()
  • send_signal(signal)
  • suspend()
  • resume()
  • terminate()
  • kill()
  • wait(timeout = none)

2.4.4. 进程开启类Popen

class psutil.Popen(*args , **kwargs)
用Popen打开两个应用进程:Foxmail.exeMockingBot.exe,然后结束并杀掉这两个进程。

Paste_Image.png

运行结果:

Paste_Image.png

2.4. Windows系统下的 services

系统服务迭代器
psutil.win_service_iter()
根据名字获取服务
psutil.win_service_get(name)
Windows服务对象
class psutil.WindowsService

  • name()
  • display_name()
  • binpath()
  • username()
  • start_type()
  • pid()
  • status()
  • description()
  • as_dict()

2.5. 常量

Constants

3. 小知识

3.1. python的传参

python传参的时候可以带上形式参数名,如本文中的例子:
psutil.cpu_times(False)
也可以写成:
psutil.cpu_times(percpu = False)

Paste_Image.png

3.2. python的迭代器

假设现在拿到一个迭代器,it
如:it = psutil.win_service_iter()
单个获取迭代器中的元素:
it.next()
for循环获取元素:

for i in it:
    print i

3.3. 僵尸进程

进程在调用exit命令结束自己生命的时候并没有真正被销毁,而是转为僵尸状态,称为一个僵尸进程
僵尸进程需要由他的父进程来收尸,如果父进程结束则转而由初始化进程来收尸。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 197,511评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,011评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,489评论 0 326
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,872评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,741评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,525评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,914评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,542评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,833评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,858评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,674评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,479评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,923评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,099评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,400评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,923评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,141评论 2 339

推荐阅读更多精彩内容