09-18-周四_14-43-27
This commit is contained in:
@@ -71,7 +71,7 @@
|
||||
|
||||
### 状态介绍
|
||||
|
||||

|
||||

|
||||
|
||||
在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
Reference in New Issue
Block a user