多任务的介绍
- 多任务指的是在同一之间内执行多个任务
- 并发
- 在一段时间内交替的去执行多个任务,例如单核的CPU处理多任务,操作系统要让各个任务交替执行。
- 前提是任务量大于CPU的核数
- 并行
- 在一段时间内真正的同时一起执行多个任务
- 对于多核心CPU处理多任务,操作系统会给CPU的每个内核安排一个执行任务,多个内核是真正的
一起同时执行多个任务
。
进程的介绍
如何在程序中实现多任务的方式?
- 进程的概念:进程(Process)是资源分配的最小单位,它是操作系统进行资源分配和调度运行的基本单位,通俗理解就是一个正在运行的程序就是一个进程。
在Python
中,想要实现多任务可以通过多线程来完成。
- 操作系统会优先创建一个主进程->然后在创建一个子进程
进程的创建步骤
target
: 执行的任务名称,这里指的是函数名(方法名)name
: 进程名字group
: 进程组,目前只能使用None
multiprocessing.Process(target=任务名,name=进程运行名称,group=进程组)
代码语言:javascript复制#!/usr/bin/python3
import multiprocessing
import time
def sing():
for i in range(3):
print("唱歌")
time.sleep(0.5)
def dance():
for i in range(3):
print("跳舞")
time.sleep(0.5)
if __name__ == '__main__':
# 指定此进程的处理函数
targets1 = multiprocessing.Process(target=sing)
targets2 = multiprocessing.Process(target=dance)
targets1.start()
targets2.start()
执行带有参数的任务
args
:以元祖的方式给任务传输参数kwargs
: 以字典的方式给任务传参
import multiprocessing
import time
def sing(number):
for i in range(number):
print("唱歌")
time.sleep(0.5)
def dance(number):
for i in range(number):
print("跳舞")
time.sleep(0.5)
if __name__ == '__main__':
# 指定此进程的处理函数
targets1 = multiprocessing.Process(target=sing,args=(6,))
# 使用字典给指定传参
targets2 = multiprocessing.Process(target=dance,kwargs={'number':4})
targets1.start()
targets2.start()