python 实现两个线程交替执行
我就废话不多说,直接看代码吧!
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多线程实现同时执行两个while循环的操作
如果想同时执行两个while True循环,可以使用多线程threading来实现. 完整代码 #coding=gbk from time import sleep, ctime import threading def muisc(func): while True: print 'Start playing: %s! %s' %(func,ctime()) sleep(2) def move(func): while True: print 'Start playing: %s! %s' %
-
对python while循环和双重循环的实例详解
废话不多说,直接上代码吧! #python中,while语句用于循环执行程序,即在某个条件下,循环执行某段程序,以处理需要重复处理的相同任务. #while是"当型"循环结构. i=1 while i<=20: print(i,end=" ") i+=1 sum=0 i=1 while i<=100: sum+=i i+=1 else: print("\n",sum) print("0+2+...+100=",su
-
Python多线程实现同步的四种方式
临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能,因为不能多个线程同时操作,而访问这部分资源的代码通常称之为临界区. 锁机制 threading的Lock类,用该类的acquire函数进行加锁,用realease函数进行解锁 import threading import time class Num: def __init__(self): self.num = 0 self.lock = threading.Lock() def add(s
-
python 实现两个线程交替执行
我就废话不多说,直接看代码吧! 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 = threa
-
Java 用两个线程交替打印数字和字母
前一段时间听马士兵老师讲课,讲到某公司的一个面试,两个线程,其中一个线程输出ABC,另一个线程输出123,如何控制两个线程交叉输出1A2B3C,由于本人多线程掌握的一直不是很好,所以听完这道题,个人感觉收获良多,这是一个学习笔记.这道题有多种解法,不过有些属于纯炫技,所以只记录常见的三种解法.首先看第一种 1. park 和 unpark package cn.bridgeli.demo; import com.google.common.collect.Lists; import ja
-
C++详解如何实现两个线程交替打印
C++线程库,点击此处查看文档 首先简单搭一个框架,让两个线程先尝试实现交替打印. //实现两个线程交替打印 #include <iostream> #include <thread> using namespace std; int main(void) { int n = 100; int i = 0; //创建两个线程 thread t1([&n, &i](){ while (i < n) { cout << i << "
-
java实现两个线程交替打印的实例代码
使用ReentrantLock实现两个线程交替打印 实现字母在前数字在后 package com.study.pattern; import java.util.concurrent.CountDownLatch; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public c
-
Java中实现两个线程交替运行的方法
今天笔者收到老师的一个题目,让我准备两个流程,依次实现输出以下信息 如: 线程A 打印 字母a ,线程B 打印数字1 线程A 打印 字母b ,线程B 打印数字2 线程A 打印 字母c ,线程B 打印数字3 线程A 打印 字母d ,线程B 打印数字4 ... 依次打印完毕26个字母和26个数字 ,输出效果为: a1b2c3...z26 下文笔者就将具体的实现思路展示如下: 1.将借助多线程的wait方法 2.借助一个外部变量 package com.java265.other; public cl
-
Java synchronized线程交替运行实现过程详解
背景 用两个线程交替输出A-Z和1-26,即一个线程输出A-Z,另一个线程输出1-26 而且是交替形式 线程1输出A--线程二输出1 线程1输出B--线程二输出2 线程1输出C--线程二输出3 以此类推 分析 主要考察线程之间的通信,思路就是创建两个线程 在一个线程输出一个内容之后,自己进入阻塞,去唤醒另一个线程 另一个线程同样,输出一个内容之后,自己进入阻塞,去唤醒另一个线程 代码实现(一) public class AlternateCover { public static void ma
-
Python 高级教程之线程进程和协程的代码解析
目录 进程 进程 5 种基本状态 进程的特点 进程间数据共享 进程池 进程的缺点 线程 线程的定义 使用线程模块的简单示例 代码解析 协程 协程与线程 Python 协程 协程的执行 关闭协程 链接协程以创建管道 总结 进程 进程是指在系统中正在运行的一个应用程序,是 CPU 的最小工作单元. 进程 5 种基本状态 一个进程至少具有 5 种基本状态:初始态.就绪状态.等待(阻塞)状态.执行状态.终止状态. 初始状态:进程刚被创建,由于其他进程正占有CPU资源,所以得不到执行,只能处于初始状态.
-
Java线程使用同步锁交替执行打印奇数偶数的方法
对同一个对象进行多线程操作时,如何保证线程执行结果的一致性?我们需要对线程操作对象加同步锁.(这是一道面试题) 需求描述 1-20个数字 A线程打印奇数:1,3,5,7,9,11,13,15,17,19 B线程打印偶数:2,4,6,8,10,12,14,16,18,20 C线程在AB两个线程执行完了之后打印结果:"success". 线程代码实现 Num.java package com.boonya.thread.test; /** * @ClassName: Num * @Desc
-
Java 创建两个线程模拟对话并交替输出实现解析
需求说明 实现方式 嗯 这个可以视作一个经典的消费者和生产者的问题,详细见代码注释 代码内容 消费者,负责取走生产者产生的信息 /** * @auther::9527 * @Description: 消费者 * @program: 多线程 * @create: 2019-08-10 10:45 */ public class Consumer extends Thread{ private MiddleMan mid = null; public Consumer() { } public Co
-
Python中进程和线程的区别详解
Num01–>线程 线程是操作系统中能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一个线程指的是进程中一个单一顺序的控制流. 一个进程中可以并发多条线程,每条线程并行执行不同的任务. Num02–>进程 进程就是一个程序在一个数据集上的一次动态执行过程. 进程有以下三部分组成: 1,程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成. 2,数据集:数据集则是程序在执行过程中需要的资源,比如图片.音视频.文件等. 3,进程控制块:进程控制块是用来记录进程的外部
随机推荐
- 代理服务器基础知识详细介绍
- 实例讲解分布式缓存软件Memcached的Java客户端使用
- java多线程编程学习(线程间通信)
- js中一个函数获取另一个函数返回值问题探讨
- 使用纯javascript实现经典扫雷游戏
- 设置ASP.NET页面的运行超时时间详细到单个页面及站点
- JavaScript italics方法入门实例(把字符串显示为斜体)
- Android App中的GridView网格布局使用指南
- BootStrap入门学习第一篇
- jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
- JS实现移动端判断上拉和下滑功能
- 用RegFind从命令行快速操作注册表
- winasse.exe的手工查杀流程[图文]教程
- C语言实现的排列组合问题的通用算法、解决方法
- JavaScrpt判断一个数是否是质数的实例代码
- Spring MVC参数自动绑定List的解决方法
- vue中axios解决跨域问题和拦截器的使用方法
- 78行Python代码实现现微信撤回消息功能
- thinkPHP中U方法加密传递参数功能示例
- django-filter和普通查询的例子
