Python多任务的进程和线程

Python 多任务

多任务是指在同一时间执行多个任务,其最大的好处就是充分的利用CPU资源,提高程序的执行效率

##多任务的执行方式分别有并发和并行两种方式:
并发 : 在一段时间内交替去执行任务 也就是当要执行的任务大于CPU的核数
并行 : 多个任务真正意义一起执行 对于多喝CPU处理多任务,操作系统会给CPU的每个内核安排一个执行的软件,多 个内核时真正的一起执行软件,这里需要注意多喝CPU是并行的执行多任务,始终有多个软件一起执行。

当然想要实现多任务,就要谈谈进程和线程还有协程。
在python程序中,想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式

那么什么是进程呢?
一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。
这里需要注意的是:一个程序运行后至少有一个进程,一个进程默认有一个线程,进程里面可以创建多个线程,线程是依附在进程里面的,没有进程就没有线程。 就好比我们用微信聊天我们可以同时和多个人聊天

多进程可以完成多任务,每个进程就好比一家独立的公司,每个公司都各自在运营,每个进程也各自在运行,执行各自的任务。

介绍完了进程,我们来看看进程是如何使用的?
在python中 有一个进程包 multiprocessing 我们首先要导入这个包 import multiprocessing

在这里插入图片描述
运行结果
在这里插入图片描述
我们知道在一个程序中可能会有多个进程,进程也有主进程和子进程 我们可以通过获取进程编号来验证主进程和子进程的关系,可以得知子进程是由哪个主进程创建出来的。
获取进程编号有两种操作:
第一种是获取当前进程编号 ,在python的os模块里面有个方法os.getpid() 表示获取当前进程编号
第二种是获取当前父进程编号,os.getppid 对比获取当前进程编号只是多了一个字母。
通过实践,子进程的父进程编号和主进程的编号是同一个编号 即主进程和子进程的关系就是父子关系,而且是亲生的 ,没有主进程也就没有子进程
在这里插入图片描述
前面我们使用进程执行的任内务是没有参数的,假如我们使用进程执行的任务带有参数,如何给函数传参呢?
Process类执行任务并给任务传参数有两种方式
args 表示以元组的方式给执行任务传参,元组方式传参一定要和参数的顺序保持一致

在这里插入图片描述
kwargs 表示以字典方式给执行任务传参,字典方式传参字典中的key一定要和参数名保持一致
在这里插入图片描述
进程之间的注意点:
1.进程之间不共享全局变量
2.主进程会等待所有的子进程执行结束再结束
创建子进程会对进程资源进行拷贝,也就是说子进程是主进程得一个副本,好比是一对双胞胎,指所以进程之间不共享全局变量,是因为操作得不是同一个进程里面得全局变量,是不过不同进程里面得全局变量得名字相同而已
如果我们不让主进程等待子进程 我们可以设置守护主进程 或者在主进程退出之前让子进程销毁
设置守护主进程 :子进程对象.demon=True
销毁子进程: 子进程对象.terminate()

线程
在Python中想要实现多任务除了使用进程,还可以使用线程来完成,线程是实现多任务得另一种方式
线程是进程中执行代码得一个分支,每个执行分支(线程)要想

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值