python进程--传参,for循环创建,join方法
Posted python-lyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python进程--传参,for循环创建,join方法相关的知识,希望对你有一定的参考价值。
OK上一篇我们简单学了一下 进程 的创建方式,那么这一篇,我们把其他一些边角料..不对,不是边角料..........也是很重要的一些小知识点
也是经常用的。
话不多说直接进入主题
传参:
from multiprocessing import Process 这一步大家还记得吧,对喽,不管进程写那些东西,我们第一步先写这个,导入Pocess
先来个函数的哈! 这是第一种,这一种里面有两种传参对象
def f1(n):
print(n)
if __name__ == ‘__main__‘:
p1 = Process(target=f1,args=("鸡蛋灌饼") # 先来个字符串的
p1.start()
p1 = Process(target=f1,kwargs={‘n‘:‘大力‘}) # 再来个字典的.
p1.start()
这是第一只种, 这是一个进程哈,都是p1,可不是两个进程,大家别搞混啦哈,只是为了演示两种传参对象,好了说第二种传参的方式,
再来个类的:
class MyProcess(Process):
def __init__(self,name):
super().__init__() #别忘了执行父类的init
self.name = name
def run(self):
print(‘宝宝and%s不可告人的事情‘%self.n)
if __name__ == ‘__main__‘:
p1 = MyProcess("炸鸡") #对,上一篇见过,就是个这样的.就这
p1.start()
传参就是这两种了,很简单,大家好好记一下,多敲几遍
接下来就是for 循环创建了,因为我们工作,平时用都不可能说就创建一个两个 的进程,
所以用for循环能快速创建多个进程
from multiprocessing import Process
def f1(i):
print(i)
def f2(i)
print
if __name__ == ‘__main__‘:
for i in range(20): 在这块加个for循环, rang是范围, ()里面写创建的个数 20个 剩下两步都没变,
p1 = Process(target=f1,args=(i,))
p1.start()
以上就是 for 循环创建进程了 创建完,我们就有20个进程了 大家可能觉得很抽象,20个进程在哪呢,我咋就没看呢,
创建 20个进程都是在底层内存里面,创建好的, 这里理解不了没关系,往后慢慢了解就知道了
接下来是join方法
join在字符串里面是拼接的意思,在这里是是阻断的意思
from multiprocessing import Process
def f1():
print(‘啤酒‘)
def f2():
print(‘可乐‘)
if __name__ == ‘__main__‘:
p1 = Process(target=f1,)
p1.start()
p1.join() # 这一步呢就是主进程等待子进程运行完才继续执行,首先我们要知道在运行进程的时候,
主进程的代码运行速度是非常快的,会比子进程还要快的,如果不阻塞的话,可能子进程的功能还没实现,就先把主进程的代码
打印出来了,所以这时候就需要join阻隔了,让子进程先执行. 对,就是这样
p2 = Process(target=f2,) #这是第二个进程 join写在哪个进程下面,就先执行哪个
p2.start()
p2.join()
print(‘我要等了...等我的子进程...‘) 这一步就是传说中的主进程 代码
print(‘我是主进程!!!‘) 这一句也是
OK ,大家花点时间把上面这三方法,理解一下,记一下.
以上是关于python进程--传参,for循环创建,join方法的主要内容,如果未能解决你的问题,请参考以下文章
第34篇 通过类的方法开启子进程,以及传参,join阻塞,daemon守护进程,同步Lock,Samphore信号量,event事件
python全栈开发day32-进程创建,进程同步,进程间的通信,进程池
一个for循环的Python脚本程序中如何加入多进程(并发进程)呢,急急急,在线等?