一.进程的状态:
- 就绪态:运行的条件已经满足,正在等待cpu执行
- 执行态:cpu正在执行其功能
- 等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待状态
二. 使用进程实现多任务
import multiprocessing
import time
def test1():
for i in range(5):
print("----1----")
time.sleep(1)
def test2():
for i in range(5):
print("----2----")
time.sleep(1)
def main():
p1 = multiprocessing.Process(target=test1)
p2 = multiprocessing.Process(target=test2)
p1.start()
p2.start()
if __name__ == '__main__':
main()
三.写时拷贝
写时拷贝: 指的是两个任务可以同时自由读取内存,但任意一个任务试图对内存进行修改时,内存就会复制一份提供给修改方单独使用,以免影响到其他的任务使用。
四.进程与线程的区别
进程:
- 能够完成多任务,比如在一台电脑上能够同时运行多个QQ
- 是资源分配的单位
线程:
- 能够完成多任务(轻量级),比如一个QQ中的多个聊天窗口,
- 是操作系统调度的单位
- 线程不能独立执行,必须依附进程
区别:
- 一个程序至少有一个进程,一个进程至少有一个线程
- 线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高
- 进程在执行过程中拥有独立的内存单位,而多个线程共享内存,极大的提高了程序的运行效率
优缺点: 线程执行开销小,但不利于资源的管理和保护;而进程则相反。