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 相关文章推荐
pymongo实现多结果进行多列排序的方法
May 16 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
python3.5 email实现发送邮件功能
May 22 Python
总结python中pass的作用
Feb 27 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
Python filter过滤器原理及实例应用
Aug 18 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
Jan 24 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实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
js计算页面刷新的次数
2009/07/20 Javascript
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
求网格中的黑点分布
2013/11/06 面试题
计算机专业毕业生求职信
2014/04/30 职场文书
殡葬服务心得体会
2014/09/11 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL