首页 / 知识
Python中使用多进程
2023-11-12 13:42:00
python中multiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情
示例1
frommultiprocessingimportProcess
importtime
defrun_process():
whileTrue:
print("子进程----2----")
time.sleep(1)
if__name__=='__main__':
p=Process(target=run_process)#target指定目标函数
p.start()
whileTrue:
print("主进程----1----")
time.sleep(1)
Process语法:
Process([group[,target[,name[,args[,kwargs]]]]])
参数--------------------------
target:如果传递了函数的引用,可以任务这个子进程就执行这里的代码
args:给target指定的函数传递的参数,以元组的方式传递
kwargs:给target指定的函数传递命名参数
name:给进程设定一个名字,可以不设定
group:指定进程组,大多数情况下用不到
Process创建的实例对象的常用方法:
方法--------------------------
start():启动子进程实例(创建子进程)
is_alive():判断进程子进程是否还在活着
join([timeout]):是否等待子进程执行结束,或等待多少秒
terminate():不管任务是否完成,立即终止子进程
Process创建的实例对象的常用属性:
属性-------------------------
name:当前进程的别名,默认为Process-N,N为从1开始递增的整数
pid:当前进程的pid(进程号)
示例2进程pid
frommultiprocessingimportProcess
importtime
importos
defrun_process():
whileTrue:
print("子进程----pid:{}----".format(os.getpid()))
print()
time.sleep(1)
if__name__=='__main__':
p=Process(target=run_process)
p.start()
whileTrue:
print("主进程----pid:{}----".format(os.getpid()))
time.sleep(1)
示例3子进程目标方法传参
frommultiprocessingimportProcess
importtime
importos
defrun_process(course,teacher,*args,**kwargs):
whileTrue:
print("子进程----pid:{}----{}上{}课".format(os.getpid(),teacher,course))
print()
time.sleep(1)
if__name__=='__main__':
p=Process(target=run_process,args=('语文',),kwargs={'teacher':'张三'})
p.start()
whileTrue:
print("主进程----pid:{}----{}上{}课".format(os.getpid(),'李四','数学'))
time.sleep(1)
示例4进程间不会共享全局变量
frommultiprocessingimportProcess
importtime
importos
num_list=[0,1,3,4,5,6,7,8,9,10]
i=3
defrun_process1():
globali
whilei:
print("子进程----pid:{}----".format(os.getpid()))
num_list.pop()
print(num_list)
i=i-1
time.sleep(1)
defrun_process2():
globali
whilei:
print("子进程----pid:{}----".format(os.getpid()))
num_list.append(i+1)
print(num_list)
i=i-1
time.sleep(1)
if__name__=='__main__':
p=Process(target=run_process1)
p.start()
p=Process(target=run_process2)
p.start()
输出
子进程----pid:10187----
[0,1,3,4,5,6,7,8,9]
子进程----pid:10188----
[0,1,3,4,5,6,7,8,9,10,4]
子进程----pid:10187----
[0,1,3,4,5,6,7,8]
子进程----pid:10188----
[0,1,3,4,5,6,7,8,9,10,4,3]
子进程----pid:10187----
[0,1,3,4,5,6,7]
子进程----pid:10188----
[0,1,3,4,5,6,7,8,9,10,4,3,2]
以上内容为大家介绍了Python中使用多进程,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
Python之数据库游标对象详解
Python之数据库游标对象详解,软件,代码,一致,培训,数据库,游标,对象,方法,事务,操作,常用数据库:MySQL、Oracle、SQLite但是包嵌入到Python中为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规使用Python的toolz库开始函数式编
使用Python的toolz库开始函数式编程,代码,函数,培训,位置,参数,字典,顺序,操作,结果,测试,toolz库允许你操作函数,使其更容易理解,更容易测试代如何提速优化python代码?
如何提速优化python代码?,代码,时间,数据,新增,写法,包装,情况,下来,面临,工作,Python是一种脚本语言,相比C/C++这样的编译语言,在效率和性能方为什么Python没有main函数?
为什么Python没有main函数?,入口,代码,灵活,函数,培训,状态,统一,项目,网上,名称,毫无疑问,Python中没有所谓的主入口函数,但是互联网上经常有文Python内置函数
Python内置函数,数字,函数,培训,位置,第一,代码,异常,数据,公式,序列,python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好python经典最短代码实现排序的功能
python经典最短代码实现排序的功能,代码,位置,数据,分析,时间,序列,元素,培训,下来,算法,冒泡排序:算法思想:1.比较相邻的元素,如果第一个比第二使用 Python 函数进行模块化
使用 Python 函数进行模块化,代码,时间,函数,工作,名称,通用,系统,信息,项目,培训,你是否对函数、类、方法、库和模块等花哨的编程术语感到困Pylint让Python代码保持一致
Pylint让Python代码保持一致,代码,项目,数字,位置,地方,设计,工具,培训,一致,准则,当你想要争论代码复杂性时,Pylint是你的朋友。Pylint是更高python之什么是函数式编程?
python之什么是函数式编程?,系统,概念,项目,大规模,状态,数据,培训,函数,语言,副作用,函数式编程(简称FP)是一种编程范式,其中最基本的元素是Python 中如何实现参数化测试?
Python 中如何实现参数化测试?,密码,数据,测试,业务,情况,预期,培训,系统,参数,方法,之前,我曾转过一个单元测试框架系列的文章,里面介绍了unitPython的函数式
Python的函数式,名称,术语,概念,培训,函数,变量,对象,参数,希腊字母,赋值,尽管Python并不是以函数式为主的语言,但对它来说支持函数式编程也相