09-18-周四_14-43-27
This commit is contained in:
@@ -8,6 +8,8 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
|
程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
|
||||||
|
|
||||||
手工操作方式两个特点:
|
手工操作方式两个特点:
|
||||||
@@ -87,8 +89,12 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
|
分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
|
||||||
若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行。由于计算机速度很快,作业运行轮转得很快,给每个用户的印象是,好象他独占了一台计算机。而每个用户可以通过自己的终端向系统发出各种操作控制命令,在充分的人机交互情况下,完成作业的运行。
|
若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行。由于计算机速度很快,作业运行轮转得很快,给每个用户的印象是,好象他独占了一台计算机。而每个用户可以通过自己的终端向系统发出各种操作控制命令,在充分的人机交互情况下,完成作业的运行。
|
||||||
具有上述特征的计算机系统称为分时系统,它允许多个用户同时联机使用计算机。
|
具有上述特征的计算机系统称为分时系统,它允许多个用户同时联机使用计算机。
|
||||||
|
@@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
### 状态介绍
|
### 状态介绍
|
||||||
|
|
||||||

|

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