多线程 同步对象 event 简单实例 &进程间通信
多线程 同步对象event
import threading,time
class Boss(threading.Thread): def run(self):
print("BOSS:今晚大家都要加班到22:00。")
print(event.isSet())# False
#设置之后 worker才可以往下执行
event.set()
time.sleep(5)
print("BOSS:<22:00>可以下班了。")
print(event.isSet())
event.set() class Worker(threading.Thread):
def run(self):
#到这里先不往下执行,等到Boss线程 set之后
event.wait()# 一旦event被设定,等同于pass print("Worker:哎……命苦啊!")
time.sleep(1)
#清空状态,然后在设置,等待boss再次设置
event.clear()
event.wait()
print("Worker:OhYeah!") if __name__=="__main__":
event=threading.Event() threads=[]
for i in range(5):
threads.append(Worker())
threads.append(Boss())
for t in threads:
t.start()
for t in threads:
t.join() print("ending.....")
进程间通信
import queue,time import multiprocessing
def foo(q):
time.sleep(1)
print("son process",id(q))
q.put(123)
q.put("yuan") if __name__ == '__main__':
#q=queue.Queue()
q=multiprocessing.Queue()
p=multiprocessing.Process(target=foo,args=(q,))
p.start()
#p.join()
print("main process",id(q))
print(q.get())
print(q.get()) from multiprocessing import Process, Pipe
def f(conn):
conn.send([12, {"name":"yuan"}, 'hello'])
response=conn.recv()
print("response",response)
conn.close()
print("q_ID2:",id(conn)) if __name__ == '__main__': parent_conn, child_conn = Pipe() #双向管道 print("q_ID1:",id(child_conn))
p = Process(target=f, args=(child_conn,))
p.start() print(parent_conn.recv()) # prints "[42, None, 'hello']"
parent_conn.send("儿子你好!")
p.join() from multiprocessing import Process, Manager def f(d, l,n): d[n] = '' #{0:"1"}
d[''] = 2 #{0:"1","2":2} l.append(n) #[0,1,2,3,4, 0,1,2,3,4,5,6,7,8,9]
#print(l) if __name__ == '__main__': with Manager() as manager: d = manager.dict()#{} l = manager.list(range(5))#[0,1,2,3,4] p_list = [] for i in range(10):
p = Process(target=f, args=(d,l,i))
p.start()
p_list.append(p) for res in p_list:
res.join() print(d)
print(l)
多线程 同步对象 event 简单实例 &进程间通信的更多相关文章
- [转]同步对象Event的用法
同步对象Event的用法 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面. CreateEvent函数功能描述:创建或打开一个命名的或无名的事 ...
- iOS:多线程同步加锁的简单介绍
多线程同步加锁主要方式有3种:NSLock(普通锁).NSCondition(状态锁).synchronized同步代码块 还有少用的NSRecursiveLock(递归锁).NSConditionL ...
- Windows下C++多线程同步与互斥简单运用
1. 互斥量,Mutex #include <Windows.h> #include <iostream> using namespace std; DWORD WINAPI ...
- Windows下C++多线程同步与互斥简单运用(转)
1. 互斥量,Mutex #include <Windows.h> #include <iostream> using namespace std; DWORD WINAPI ...
- 同步对象(同步条件Event)
event = threading.Event() #创建同步对象 event.wait() #同步对象等待状态 event.set() #同步对象设置Trueevent.clear() ...
- 多线程模块的同步机制event对象
多线程模块的同步机制event对象 线程的核心特征就是他们能够以非确定的方式(即何时开始执行,何时被打断,何时恢复完全由操作系统来调度管理,这是用户和程序员无法确定的)独立执行的,如果程序中有其他线程 ...
- Linux多线程及线程同步简单实例
一.多线程基本概念 1. 线程的基本概念 ① 线程就是轻量级的进程 ②线程和创建他的进程共享代码段.数据段 ③线程拥有自己的栈 2. 在实际应用中,多个线程往往会访问同一数据或资源,为避免线程之间相互 ...
- python多线程同步实例分析
进程之间通信与线程同步是一个历久弥新的话题,对编程稍有了解应该都知道,但是细说又说不清.一方面除了工作中可能用的比较少,另一方面就是这些概念牵涉到的东西比较多,而且相对较深.网络编程,服务端编程,并发 ...
- Windows多线程同步系列之一-----互斥对象
多线程同步之互斥对象 作者:vpoet mail:vpoet_sir@163.com 对卖票问题进行线程间同步,本文将在上文的基础上,使用互斥对象对线程进行同步. 首先看看windows API ...
随机推荐
- BZOJ2160 拉拉队排练【Manacher】
Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训 ...
- pat甲级 1154 Vertex Coloring (25 分)
A proper vertex coloring is a labeling of the graph's vertices with colors such that no two vertices ...
- win8.1下安装双系统ubuntu14.04.3
一.去ubuntu官网下载长期支持版的系统,64位还是32位由物理内存而定,4G以下用32位,4G以上(包括4G)使用64位. 二.若64位的系统,下载下来的文件名应该是ubuntukylin-14. ...
- js中怎么去掉数组的空值
for(var i = 0 ;i<array.length;i++) { if(array[i] == "" || typeof(array[i] ...
- RF设置全局变量
一般情况下,我们的测试用例会有很多公用数据,比如在测试购票功能的时候,可能是一直使用同一个列车号,这时候我们就没有必要在每一个Case中都去新建一个列车班次,而是设置一个全局变量: 1.Set Var ...
- wpf中如何在xaml中绑定cs中类的属性
cs代码:/// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWin ...
- ballerina 学习九 Client endpoints
说白了就是连接外部服务的,可以是http jms websocket .... 简单例子 代码 import ballerina/http; import ballerina/log; endpoin ...
- 使用gopherjs 进行web 应用开发
1. 安装 go get -u github.com/gopherjs/gopherjs 2. 基本代码使用 备注: 这个只是一个简单的demo,进行pi 运算,结果还真是快 a. code gola ...
- chrome扩展程序开发之在目标页面执行自己的JS
大家都知道JS是执行在client的.所以,假设我们自己写一个浏览器的话.是一定能够往下载下来的网页源码中加入js的.可惜我们没有这个能力.只是幸运的是,chrome的扩展程序能够帮我们做到这件事. ...
- 微信卡券领取页面提示签名错误,微信卡券JSAPI签名校验工具对比签名一模一样,cardExt扩展字段有问题
一.领券页面错误 二.给到前端的数据 三.根据给前端的额数据做签名校验 四.给前端的签名和校验的签名一致(这一步能判断签名没有问题,基本可以判断是前端调用微信接口时拼接的数据有问题) 五.以下是微信的 ...