基本概念
1.多任务:就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务。
2. 并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行,同一时间段运行,(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已),例:吃完饭->喝水 喝完水->睡觉 一觉醒来->吃饭……
3.并行:指的是任务数小于等于cpu核数,同一时刻,(即任务真的是一起执行的),例:吃饭的时候可以边吃饭边打电话,这两件事情可以同时执行
4.进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ;可以将进程理解为工厂中的一条流水线。
线程,能够完成多任务,比如 一个QQ中的多个聊天窗口;其中的线程就是这个流水线上的工人。
python进程
1.进程和程序
程序:例如main.py这是程序,是一个静态的
进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。
2.进程的状态
工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态。
3.进程的创建
(1)multiprocessing.Process类参数
target表示子线程的入口函数代码 None表示nothing
args表示入口代码运行所需的参数的元组
name指定进程的名称,可以不指定
(2)Process实例常用方法和属性
start() 启动进程的创建和执行
is_alive() 判断进程是否还存活
join([time]) 阻塞等待(超时)子进程结束
terminate() 终止子进程<慎用>
name 进程名称
from multiprocessing import Process
import os
import time
def run_proc(name):
for i in range(10):
print('Run child process %s (%s)...' % (name, os.getpid())) #ps aux | grep process_name
time.sleep(1)
def func(name):
for i in range(10):
print('Run child process %s (%s)...' % (name, os.getpid()))
time.sleep(1)
if __name__ == '__main__':
print('Parent process %s.' % os.getpid())
p = Process(target=run_proc,args=('test',), name='th1') #创建子进程,传入执行函数