09-18-周四_14-43-27

This commit is contained in:
2025-09-18 14:43:27 +08:00
parent 3ed89009e5
commit 244627cf69
4 changed files with 22 additions and 14 deletions

View File

@@ -71,7 +71,7 @@
### 状态介绍
![image-20210725221132043](03.%E5%A4%9A%E8%BF%9B%E7%A8%8B/image-20210725221132043.png)
![image-20250918143803006](03.多进程/image-20250918143803006.png)
在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。
@@ -172,8 +172,9 @@ process模块是一个创建进程的模块借助这个模块就可以完
方法介绍
| p.start() | 启动进程并调用该子进程中的p.run() |
| 方法 | 描述 |
| ----------------- | ------------------------------------------------------------ |
| p.start() | 启动进程并调用该子进程中的p.run() |
| p.run() | 进程启动时运行的方法正是它去调用target指定的函数我们自定义类的类中一定要实现该方法 |
| p.terminate() | 强制终止进程p不会进行任何清理操作如果p创建了子进程该子进程就成了僵尸进程使用该方法需要特别小心这种情况。如果p还保存了一个锁那么也将不会被释放进而导致死锁 |
| p.is_alive() | 如果p仍然运行返回True |
@@ -181,8 +182,9 @@ process模块是一个创建进程的模块借助这个模块就可以完
属性介绍
| p.daemon | 默认值为False如果设为True代表p为后台运行的守护进程当p的父进程终止时p也随之终止并且设定为True后p不能创建自己的新进程必须在p.start()之前设置 |
| 方法 | 描述 |
| ---------- | ------------------------------------------------------------ |
| p.daemon | 默认值为False如果设为True代表p为后台运行的守护进程当p的父进程终止时p也随之终止并且设定为True后p不能创建自己的新进程必须在p.start()之前设置 |
| p.name | 进程的名称 |
| p.pid | 进程的pid |
| p.exitcode | 进程在运行时为None、如果为N表示被信号N结束(了解即可) |
@@ -318,9 +320,9 @@ class MyProcess(Process):
print('%s 正在和女主播聊天' %self.name)
if __name__ == '__main__':
p1 = MyProcess('陈松')
p2 = MyProcess('松哥')
p3 = MyProcess('松松')
p1 = MyProcess('张三')
p2 = MyProcess('李四')
p3 = MyProcess('王五')
p1.start()
p2.start()
@@ -375,7 +377,7 @@ class Myprocess(Process):
print('%s正在和女主播聊天' %self.person)
if __name__ == '__main__':
p=Myprocess('陈松')
p=Myprocess('张三')
p.daemon=True #一定要在p.start()前设置,设置p为守护进程,禁止p创建子进程,并且父进程代码执行结束,p即终止运行
p.start()
time.sleep(10) # 在sleep时查看进程id对应的进程
@@ -467,12 +469,12 @@ class Myprocess(Process):
super().__init__()
def run(self):
print('%s正在和陈松聊天' %self.name)
print('%s正在和张三聊天' %self.name)
time.sleep(random.randrange(1,5))
print('%s还在和陈松聊天' %self.name)
print('%s还在和张三聊天' %self.name)
if __name__ == '__main__':
p1=Myprocess('陈松')
p1=Myprocess('李四')
p1.start()
p1.terminate() # 关闭进程,不会立即关闭,所以is_alive立刻查看的结果可能还是存活
@@ -501,7 +503,7 @@ class Myprocess(Process):
# print('%s正在和网红脸聊天' %self.person)
if __name__ == '__main__':
p1=Myprocess('陈松')
p1=Myprocess('张三')
p1.start()
print(p1.pid) #可以查看子进程的进程id
```