python 多任务之进程
进程:
一个程序运行起来后, 代码 + 用到的资源称为进程, 它是操作系统分配资源的基本单元. 进程也可以完成多任务
进程的状态
工作中, 任务数往往大于 CPU 核数, 即一定有一些任务正在执行, 而另一些任务在等待 CPU 执行, 因此导师了进程有了不同的状态
- 就绪态: 运行的条件都已经满足, 正在等待 CPU 执行
- 执行态: CPU 正在执行其功能
- 等待泰: 等待某些条件满足 如 time.sleep()
进程的创建 - multiprocessing
multiprocessing 模块是跨平台版本的多进程模块, 提供了一个Process类来代表一个进程对象, 这个对象可以理解为是一个独立的进程, 可以执行另外的事情
# –*– coding: utf-8 –*–
# @Time : 2019/3/19 22:18
# @Author : Damon_duanlei
# @FileName : process_test.py
# @BlogsAddr : https://blog.csdn.net/Damon_duanlei
import multiprocessing
import time
def func_1():
while True:
time.sleep(1)
print("1")
def func_2():
while True:
time.sleep(1)
print(2)
if __name__ == '__main__':
p1 = multiprocessing.Process(target=func_1)
p2 = multiprocessing.Process(target=func_2)
p1.start()
p2.start()
给自进程的函数传参
# –*– coding: utf-8 –*–
# @Time : 2019/3/19 22:18
# @Author : Damon_duanlei
# @FileName : process_test.py
# @BlogsAddr : https://blog.csdn.net/Damon_duanlei
import multiprocessing
import time
def func_1(num):
while True:
time.sleep(1)
print(num)
def func_2(num):
while True:
time.sleep(1)
print(num)
if __name__ == '__main__':
p1 = multiprocessing.Process(target=func_1, args=(1,))
p2 = multiprocessing.Process(target=func_2, args=(2,))
p1.start()
p2.start()
进程间共享代码不共享资源(代码写时拷贝)
创建子进程时, 系统在内存中开辟一块新的空间将主进程中所有的资源复制一份到子进程中, 子进程运行过程中变量值的改变不影响主进程, 主进程中的全局变量也不