首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python串行执行

Python串行执行

正文共:1566字

预计阅读时间:4分钟

工作中遇到一个需求就是必须顺序执行完一些python方法,这些方法其原理都是调用原本就有的shell命令对系统进行相关的操作,但每个shell命令之间是有比较强的依赖的,比如B脚本要正常执行,就必须先成功执行了A脚本,此时就必须在逻辑上确保A脚本对应的python方向比B脚本对应的python方法是先执行的。

虽然说python本身是单线程的,但因为原本开发的python系统比较复杂,所以为了确保绝对的串行运行,需要显示的通过相应的逻辑来保证,这是使用锁的一个绝佳处境。

锁的运用

锁的朴素原理很简单,一个资源被锁锁住了,其他进程没有相应的钥匙就无法获得这个资源,如果该进程一定需要这个资源,那么就需要等待其他拥有锁的进程使用完后,释放出来给自己,然后才能继续执行。

那为了实现逻辑上的串行调用,利用锁就可以轻松实现,依旧是A脚本对应的方法A要比B脚本对应的方法B先调用,那么方法A调用时,将资源使用锁锁住,只用正在使用该资源的方法A具有锁的钥匙,只有等方法A执行完,释放锁后,方法B才能获得钥匙去调用相应的锁。

这里通过threading中的Lock来实现一个锁,通过装饰器的写法实现一个装饰器,实现对方法加锁,如果方法没有执行完,锁就不会释放,此时其他方法就不能继续执行。具体代码如下:

使用的使用,如下:

为了确保python是串行运行对应的方法的,这里使用list将方法存放起来,然后顺序传参调用,因为调用的方法被use_lock装饰器装饰了,所以当第一个方法在运行时,第二个方法是无法运行的,而且通过顺序获取list中方法的方式,也很好的提现串行执行的想法,具体代码如下:

小结

通过锁和list具有顺序的特性,将方法强行串行执行,让强依赖方法之间的正常使用。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181218G09GXB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券