python 实现两个线程交替执行


Posted in Python onMay 02, 2020

我就废话不多说,直接看代码吧!

import threading
import time

def a():
  while True:
    lockb.acquire()
    print('a')
    locka.release()
    time.sleep(0.5)


def b():
  while True:
    locka.acquire()
    print('b')
    lockb.release()
    time.sleep(0.5)


if __name__ == "__main__":
  locka = threading.Lock()
  lockb = threading.Lock()

  ta = threading.Thread(None, a)
  tb = threading.Thread(None, b)

  locka.acquire()   #保证a先执行

  ta.start()
  tb.start()

获取对方的锁,运行完后释放自己的锁

补充知识:线程同步——两个线程轮流执行python实现

看代码!

import threading
import time
lockA=threading.Lock()
lockB=threading.Lock()
def printA(n):
 if n<0:
  return
 lockA.acquire()
 print("+++")
 lockB.release()
 time.sleep(0.1)
 printA(n-1)
def printB(n):
 if n<0: 
  return
 lockB.acquire()
 print("***")
 lockA.release()
 time.sleep(0.2)
 printB(n-1) 
 
lockB.acquire()
t1=threading.Thread(target=printA,args=(10,))
t2=threading.Thread(target=printB,args=(10,))
t1.start()
t2.start()
t1.join()
t2.join()

找实习,又要回忆起操作系统的东西了。

思想:创建两个锁lockA和lockB。每次执行完后,锁掉自己的锁,并释放对方的锁。

初始时,若A先运行,则释放A的锁,锁住B的锁。

以上这篇python 实现两个线程交替执行就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python操作串口的方法
Jun 17 Python
python利用datetime模块计算时间差
Aug 04 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
Python退火算法在高次方程的应用
Jul 26 Python
python实现整数的二进制循环移位
Mar 08 Python
Djang的model创建的字段和参数详解
Jul 27 Python
python3调用windows dos命令的例子
Aug 14 Python
python语言线程标准库threading.local解读总结
Nov 10 Python
python基于event实现线程间通信控制
Jan 13 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
在keras中实现查看其训练loss值
Jun 16 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
Python中使用threading.Event协调线程的运行详解
May 02 #Python
浅谈Python3多线程之间的执行顺序问题
May 02 #Python
python继承threading.Thread实现有返回值的子类实例
May 02 #Python
Python3-异步进程回调函数(callback())介绍
May 02 #Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 #Python
判断Threading.start新线程是否执行完毕的实例
May 02 #Python
python中threading开启关闭线程操作
May 02 #Python
You might like
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
JsDom 编程小结
2011/08/09 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
简单了解Python生成器是什么
2019/07/02 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Python读写Excel表格的方法
2021/03/02 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
保安自我鉴定范文
2013/12/08 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
学生安全责任书
2014/04/15 职场文书
高一学生评语大全
2014/04/25 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
PyMongo 查询数据的实现
2021/06/28 Python