python 并发编程
1.python 并发编程--进程
什么是进程?
顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。
进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。我们自己在python文件中写了一些代码,这叫做程序,运行这个python文件的时候,这叫做进程。
通俗来讲:进程是正在运行的程序
好了,以上都是一些理论,概念的一些知识点,再次就不多做赘述,直接进入主题吧
给大家写个简单的例子吧!
先导入进程模块 multiprocessing 中的Process
from multiprocessing import Process
进程的两种创建方式
第一种
def f1():
print("胡辣汤")
def f2():
print("大盘鸡")
以上两个函数是进程中的子进程,进程总共分子进程跟主进程. 下面这段代码就是主进程
if __name__ == '__main__': 有人肯定不懂为什么写这一行,写这一行的意思是windows系统下必须写main,
因为windows系统创建子进程的方式决定的,开启一个子进程,这个子进程 会copy一份主进程的所有代码,并且机制类似于import引入,
这样就容易导致引入代码的时候,被引入的代码中的可执行程序被执行,导致递归开始进程,会报错.所以我们要写一行这个,在这一行下面创建主进程,
p = Process(target=f1,) 开始创建对象p, target是创建子进程对象就是 f1
p.start() 开始程序,开启程序
p1 = Process(target=f2,) 创建第二个子进程 f2
p1.start() 开始程序,开启程序
print("好想吃") 主进程代码
好了以上就是进程创建的第一种方式,就是这样的一个格式,以后就按这个格式写就对了.
第二种
class MyProcess(Process): #第二种呢就是写一个类了,第一种是写了两个函数对吧第二种呢就是写个类,类名自己随便写,然后继承Process这个类
因为我们要使用这个Process中的属性,跟方法
def __init__(self,name): 这一步就按照类的格式正常写就好了
super().__init__() 这一步,super()是因为我们要去找我们的继承的父类Process,用人家中的方法,而不是用自己的创建的类中的方法,自己创建的类当中也没有对吧
然后往下正常写就好了
self.name = name
def run(self):
print(self.name)
if __name__ == '__main__':
p = MyProcess("alex") 这一步不用Process来创建对象了,嗯,对,就是这样写的,直接写类名来创建,()里面写参数
p.start()
这是第二种创建方式,到目前为止就这两种,大家要记住哦,这不难,但就是需要花些时间耐心的去理解一下.