当前位置:首页 >> 编程语言 >> 【Python进阶】近200页md文档14大体系第4篇:Python进程使用详解(图文演示),嘟嘟牛交友

【Python进阶】近200页md文档14大体系第4篇:Python进程使用详解(图文演示),嘟嘟牛交友

0evadmin 编程语言 1
文件名:【Python进阶】近200页md文档14大体系第4篇:Python进程使用详解(图文演示),嘟嘟牛交友 【Python进阶】近200页md文档14大体系第4篇:Python进程使用详解(图文演示)

本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、html+css、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。 Python全套笔记直接地址: 请移步这里
共 14 章,157 子模块


进程

学习目标

能够知道进程的作用
1. 进程的介绍

在Python程序中,想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式。

2. 进程的概念

一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。

比如:现实生活中的公司可以理解成是一个进程,公司提供办公资源(电脑、办公桌椅等),真正干活的是员工,员工可以理解成线程。

注意:

一个程序运行后至少有一个进程,一个进程默认有一个线程,进程里面可以创建多个线程,线程是依附在进程里面的,没有进程就没有线程。

3. 进程的作用

单进程效果图:

多进程效果图:

说明:

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

4. 小结 进程是操作系统进行资源分配的基本单位。进程是Python程序中实现多任务的一种方式 多进程的使用

学习目标

能够使用多进程完成多任务
1 导入进程包 #导入进程包import multiprocessing 2. Process进程类的说明

Process([group [, target [, name [, args [, kwargs]]]]])

group:指定进程组,目前只能使用Nonetarget:执行的目标任务名name:进程名字args:以元组方式给执行任务传参kwargs:以字典方式给执行任务传参

Process创建的实例对象的常用方法:

start():启动子进程实例(创建子进程)join():等待子进程执行结束terminate():不管任务是否完成,立即终止子进程

Process创建的实例对象的常用属性:

name:当前进程的别名,默认为Process-N,N为从1开始递增的整数

3. 多进程完成多任务的代码 import multiprocessingimport time# 跳舞任务def dance():for i in range(5):print("跳舞中...")time.sleep(0.2)# 唱歌任务def sing():for i in range(5):print("唱歌中...")time.sleep(0.2)if __name__ == '__main__':# 创建跳舞的子进程# group: 表示进程组,目前只能使用None# target: 表示执行的目标任务名(函数名、方法名)# name: 进程名称, 默认是Process-1, .....dance_process = multiprocessing.Process(target=dance, name="myprocess1")sing_process = multiprocessing.Process(target=sing)# 启动子进程执行对应的任务dance_process.start()sing_process.start()

执行结果:

唱歌中...跳舞中...唱歌中...跳舞中...唱歌中...跳舞中...唱歌中...跳舞中...唱歌中...跳舞中... 4. 小结

导入进程包

import multiprocessing

创建子进程并指定执行的任务

sub_process = multiprocessing.Process (target=任务名)

启动进程执行任务

sub_process.start() 进程编号

学习目标

能够知道如果进程编号
1. 进程编号的目的

进程编号的目的是验证主进程和子进程的关系,可以得知子进程是由那个主进程创建出来的。

进程编号的两种操作

当前进程编号当前父进程编号 2. 当前进程编号

os.getpid() 表示当前进程编号

示例代码:

import multiprocessingimport timeimport os# 跳舞任务def dance():# 当前进程的编号print("dance:", os.getpid())# 当前进程print("dance:", multiprocessing.current_process())for i in range(5):print("跳舞中...")time.sleep(0.2)# 扩展:根据进程编号杀死指定进程os.kill(os.getpid(), 9)# 唱歌任务def sing():# 当前进程的编号print("sing:", os.getpid())# 当前进程print("sing:", multiprocessing.current_process())for i in range(5):print("唱歌中...")time.sleep(0.2)if __name__ == '__main__':# 当前进程的编号print("main:", os.getpid())# 当前进程print("main:", multiprocessing.current_process())# 创建跳舞的子进程# group: 表示进程组,目前只能使用None# target: 表示执行的目标任务名(函数名、方法名)# name: 进程名称, 默认是Process-1, .....dance_process = multiprocessing.Process(target=dance, name="myprocess1")sing_process = multiprocessing.Process(target=sing)# 启动子进程执行对应的任务dance_process.start()sing_process.start()

执行结果:

main: 70763main: <_MainProcess(MainProcess, started)>dance: 70768dance: <Process(myprocess1, started)>跳舞中...sing: 70769sing: <Process(Process-2, started)>唱歌中...唱歌中...唱歌中...唱歌中...唱歌中... 3. 当前父进程编号

os.getppid() 表示当前父进程编号

示例代码:

import multiprocessingimport timeimport os# 跳舞任务def dance():# 当前进程的编号print("dance:", os.getpid())# 当前进程print("dance:", multiprocessing.current_process())# 父进程的编号print("dance的父进程编号:", os.getppid())for i in range(5):print("跳舞中...")time.sleep(0.2)# 扩展:根据进程编号杀死指定进程os.kill(os.getpid(), 9)# 唱歌任务def sing():# 当前进程的编号print("sing:", os.getpid())# 当前进程print("sing:", multiprocessing.current_process())# 父进程的编号print("sing的父进程编号:", os.getppid())for i in range(5):print("唱歌中...")time.sleep(0.2)if __name__ == '__main__':# 当前进程的编号print("main:", os.getpid())# 当前进程print("main:", multiprocessing.current_process())# 创建跳舞的子进程# group: 表示进程组,目前只能使用None# target: 表示执行的目标任务名(函数名、方法名)# name: 进程名称, 默认是Process-1, .....dance_process = multiprocessing.Process(target=dance, name="myprocess1")sing_process = multiprocessing.Process(target=sing)# 启动子进程执行对应的任务dance_process.start()sing_process.start() main: 70860main: <_MainProcess(MainProcess, started)>dance: 70861dance: <Process(myprocess1, started)>dance的父进程编号: 70860跳舞中...sing: 70862sing: <Process(Process-2, started)>sing的父进程编号: 70860唱歌中...唱歌中...唱歌中...唱歌中...唱歌中... 4. 小结

当前进程编号

os.getpid()

当前父进程编号

os.getppid()

进程编号可以查看父子进程的关系

进程执行带有参数的任务

学习目标

能够写出进程执行带有参数的任务
1. 进程执行带有参数的任务的介绍

前面我们使用进程执行的任务是没有参数的,假如我们使用进程执行的任务带有参数,如何给函数传参呢?

Process类执行任务并给任务传参数有两种方式:

args 表示以元组的方式给执行任务传参kwargs 表示以字典方式给执行任务传参 2. args参数的使用

示例代码:

import multiprocessingimport time# 带有参数的任务def task(count):for i in range(count):print("任务执行中..")time.sleep(0.2)else:print("任务执行完成")if __name__ == '__main__':# 创建子进程# args: 以元组的方式给任务传入参数sub_process = multiprocessing.Process(target=task, args=(5,))sub_process.start()

执行结果:

任务执行中..任务执行中..任务执行中..任务执行中..任务执行中..任务执行完成 3. kwargs参数的使用

示例代码:

import multiprocessingimport time# 带有参数的任务def task(count):for i in range(count):print("任务执行中..")time.sleep(0.2)else:print("任务执行完成")if __name__ == '__main__':# 创建子进程# kwargs: 表示以字典方式传入参数sub_process = multiprocessing.Process(target=task, kwargs={"count": 3})sub_process.start()

执行结果:

任务执行中..任务执行中..任务执行中..任务执行完成 4. 小结

进程执行任务并传参有两种方式:

元组方式传参(args): 元组方式传参一定要和参数的顺序保持一致。字典方式传参(kwargs): 字典方式传参字典中的key一定要和参数名保持一致。 未完待续 下一期下一章 全套笔记直接地址: 请移步这里
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接