- 进程理论
- 什么是进程
- 什么是程序
- 程序就是存在硬盘上面的一堆代码文件
- py文件都是程序
- 串行并发并行
- 串行:多个任务依次运行
- 并发:看起来像是同时运行的,本质上是一个cpu来回的切换
- 并行:多个任务是真正的同时在运行,只有多个cpu才有并行的概念
- 进程的状态
- 优化程序效率的核心法则
- 降低IO操作(硬盘IO,网络IO)
- IO操作优先级
- 能从内存取的不从硬盘,能从本地的不从网络上取
- 程序调用的两种方式:
- 同步调用
- 同步调用是以中国阻塞式调用
- 可以形象理解为:考试,当一道题没做出来后,绝不会去做下一道题.即一段代码没有执行完毕,代码会一直等待,而不会执行下一段代码逻辑
- 异步调用
- 异步调用是一种非阻塞式的调用
- 可以形象理解为:考试,当这道题没有解决时,可以跳过这道题去做后面的题,当有思路时,再返回做这道题
- 开启进程的两种方式
# 开启进程的方式一:
import os, timeprint(os.getpid(), 'python第22行代码进程>>>')
from multiprocessing import Processdef tank(n, tag):print('%s>>>子进程' % tag)time.sleep(n)print('%s>>>子结束' % tag)if __name__ == '__main__':p1 = Process(target=tank, args=(2, '子进程111111>'))p2 = Process(target=tank, args=(3, '子进程222222>'))p3 = Process(target=tank, args=(4, '子进程333333>'))p1.start()p2.start()p3.start()print('>>>>主进程>>>>')
import os, time
from multiprocessing import Processdef tank(m, tag):print('%s>>>子进程' % tag)time.sleep(m)print('%s>>>子结束' % tag)if __name__ == '__main__':res = 1while True:p1 = Process(target=tank, args=(500, f'紫禁城>>>>>{res}'))res += 1p1.start()
# 开启进程的方式二:
import time,os
from multiprocessing import Processclass Myprocess(Process):def __init__(self,tag):super().__init__()self.tag = tag# 函数提示信息 -> Nonedef run(self) -> None:print('%s is running'%self.tag)time.sleep(3)print('%s is done'%self.tag)if __name__ == '__main__':p1 = Myprocess('进程11111')p1.start()print('主进程>>>>>')