[b0041] python 归纳 (二六)_多进程数据共享和同步_事件Event
# -*- coding: utf-8 -*-
"""
多进程 同步 事件multiprocessing.Event 逻辑:
子线程负责打印,会阻塞, 等待主进程发出控制信号 以便继续 总结:
个人理解, multiprocessing.Event 中维护了一个boolean变量,初始值为Fasle
e.wait() 如果为Fasle会阻塞,True继续执行 ,
set() 将值设置为True
clear() 将值设置为False
is_set() 查看 不确定是否支持多个子进程同时e.wait()阻塞中,然后主进程 set()后 全部唤醒 使用:
1. 创建事件对象 e = multiprocessing.Event()
2. e传给子进程,在进程中 e.wait([secondes]) 阻塞
3. 在另外的进程中 e.set() 通知阻塞的进程不要阻塞了
4. 必要时 e.clear() 恢复初始值 """
import multiprocessing
import time # case1
def wait_for_event(e):
print("wait_for_event: starting") # 一直等到e.set()在某个进程中执行
e.wait() print("wairt_for_event: e.is_set()->" + str(e.is_set())) # case2
def wait_for_event_timeout(e, t):
print("wait_for_event_timeout:starting") # 等到e.set()在某个进程中执行 或者时间t到了
e.wait(t) print("wait_for_event_timeout:e.is_set->" + str(e.is_set())) if __name__ == "__main__": # 创建事件对象,初始值 无效
e = multiprocessing.Event() ## case 1 一直等待
multiprocessing.Process(name="block", target=wait_for_event, args=(e,)).start() time.sleep(3) print "set"
e.set() # 设置事件有效,此时执行e.wait()的子进程接触阻塞
print e.is_set() # 查看事件是否有效 time.sleep(0.1)
print "clear"
e.clear() # 设置事件无效
print e.is_set() ## case 2 最多等待2秒
print "------case2"
multiprocessing.Process(name="non-block", target=wait_for_event_timeout, args=(e, 2)).start() time.sleep(3) print "end"
print e.is_set() """
Out:
wait_for_event: starting
set
True
wairt_for_event: e.is_set()->True
clear
False
------case2
wait_for_event_timeout:starting
wait_for_event_timeout:e.is_set->False
end
False
"""
[b0041] python 归纳 (二六)_多进程数据共享和同步_事件Event的更多相关文章
- [b0037] python 归纳 (二二)_多进程数据共享和同步_管道Pipe
# -*- coding: utf-8 -*- """ 多进程数据共享 管道Pipe 逻辑: 2个进程,各自发送数据到管道,对方从管道中取到数据 总结: 1.只适合两个进 ...
- [b0036] python 归纳 (二一)_多进程数据共享和同步_服务进程Manager
# -*- coding: utf-8 -*- """ 多进程数据共享 服务器进程 multiprocessing.Manager 入门使用 逻辑: 20个子线程修改共享 ...
- [b0035] python 归纳 (二十)_多进程数据共享和同步_共享内存Value & Array
1. Code # -*- coding: utf-8 -*- """ 多进程 数据共享 共享变量 Value,Array 逻辑: 2个进程,对同一份数据,一个做加法,一 ...
- [b0040] python 归纳 (二五)_多进程数据共享和同步_信号量Semaphore
# -*- coding: utf-8 -*- """ 多进程同步 使用信号量 multiprocessing.Semaphore 逻辑: 启动5个进程,打印,每个各自睡 ...
- [b0039] python 归纳 (二四)_多进程数据共享和同步_锁Lock&RLock
# -*- coding: utf-8 -*- """ 多进程 锁使用 逻辑: 10个进程各种睡眠2秒,然后打印. 不加锁同时打印出来,总共2秒,加锁一个接一个打印,总共 ...
- [b0038] python 归纳 (二三)_多进程数据共享和同步_队列Queue
1 队列读写 # -*- coding: utf-8 -*- """ 多进程 共享 队列 multiprocessing.Process 逻辑: 一个进程往队列写数据, ...
- [b0031] python 归纳 (十六)_线程同步_锁
# -*- coding: utf-8 -*- """ 学习 多线程同步 使用锁 threading.Lock() 逻辑: 2 个线程,操作同一个整型变量,一个加法,另外 ...
- [b0016] python 归纳 (二)_静态方法和类方法
# -*- coding: UTF-8 -*- """ 测试 类的静态方法,类方法 @staticmethod @classmethod 总结: 1. self 指向类对 ...
- Python爬虫进阶六之多进程的用法
前言 在上一节中介绍了thread多线程库.python中的多线程其实并不是真正的多线程,并不能做到充分利用多核CPU资源. 如果想要充分利用,在python中大部分情况需要使用多进程,那么这个包就叫 ...
随机推荐
- .Net Core MVC中过滤器简介
在.Net Framework MVC 中有四种过滤器,授权过滤器(Authorize).Action 过滤器.结果过滤器(Result).异常过滤器(Exception)四种过滤器.在.Net Co ...
- HDFS与YARN HA部署配置文件
core-site.xml <!--Yarn 需要使用 fs.defaultFS 指定NameNode URI --> <property> <name>fs.de ...
- sqlserver中将datetime类型转换为yyyyMMddHHmmss格式
JSON 中时间格式要求yyyyMMddHHmmss,从sqlserver 中转换 语句如下: Select REPLACE(CONVERT(varchar(100), GETDATE(), 112) ...
- 读书笔记_python网络编程3(5)
5. 网络数据与网络错误 应该如何准备需要传输的数据? 应该如何对数据进行编码与格式化? Py程序需要提供哪些类型的错误? 5.1. 字节与字符串 PC与网卡都支持将字节作为通用传输单元.字节将8比特 ...
- 小程序登录解密用户数据encryptedData -41001: encodingAesKey 非法
问题: 做小程序微信授权登录,先获取code,然后去获取到session_key和open_id,再拿到encryptedData,传到服务器去解密拿到用户信息,但是有时成功,有时返回-41001错误 ...
- Pyhton 连接数据库
Python连接MySql 步骤 开始 创建connection 获取cursor 操作过程 SQL语句 执行查询 执行命令 获取数据 处理数据 关闭游标:cursor.close() 关闭连接:co ...
- elementUI+Vue实现管理系统的登录页面
<template> <div class="maxbox"> <div id="appp"> <vue-partic ...
- JS运动---运动基础(匀速运动)
[一]运动基础 (2)基础运动案例 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- day_93_11_25爬虫一requests,项目框架
总结 nginx反向代理与正向代理. 正向带里就是,客户端通过中转服务器,访问其它他服务器的数据. 反向代理就是用户访问中转服务器,看起来就像和这台服务器交互一样. nginx动静分离. 当客户端访问 ...
- promise 和 setTimeout 在任务队列的执行顺序
setTimeout(() => { console.log() }); const a = new Promise((resolve,reject)=>{ console.log(); ...