python多进程的主进程阻塞_python 进程(process)阻塞

本文通过实例详细讲解了Python中多进程的阻塞与非阻塞情况,包括单进程、多进程、守护进程以及进程池的使用,分析了各种情况下的运行结果和特性,帮助理解Python进程管理的原理。
摘要由CSDN通过智能技术生成

背景:来观察测试一下python 进程(process)的阻塞、普通进程和守护进程又有什么区别、进程池又是什么、进程池怎么异步提交任务等等

一、公共代码

首先先贴上一些公共代码,下面的例子都基于这份公共代码运行(注:替换xxx的内容)

importtimeimportmultiprocessingdefworker(name):print('%s: %s start...' % (time.strftime('%X'), name))

time.sleep(2)print('%s: %s done.' % (time.strftime('%X'), name))defxxx():pass

if __name__ == '__main__':

xxx()

二、单进程阻塞

def单进程阻塞():

t= multiprocessing.Process(target=worker, args=('张三',))

t.start()#阻塞

t.join()print('Finished')

运行结果:

解释:阻塞进程的情况下,程序会先等待进程任务执行完,再往下执行其他代码

三、单进程不阻塞

def单进程不阻塞():

t= multiprocessing.Process(target=worker, args=('李四',))

t.start()print('Finished')

运行结果:

解释:不阻塞进程的情况下,程序会直接往下走,进程任务是后完成的(因为我在进程任务里加了 sleep),类似于异步;同时,我们还可以发现,程序执行完最后一行代码之后,如果进程任务还没完成,程序是不会马上死掉的,还是会等进程任务执行完才会结束程序。

四、多进程的错误阻塞

def多进程的错误阻塞():

t1= multiprocessing.Process(target=worker, args=('张三',))

t1.start()

t1.join()

t2= multiprocessing.Process(target=worker, args=('李

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值