python 多进程 Event的使用
Event事件 多进程的使用
通俗点儿讲 就是
1. Event().wait() 插入在进程中插入一个标记(flag) 默认为 false 然后flag为false时 程序会停止运行 进入阻塞状态
2. Event().set() 使flag为Ture 然后程序会停止运行 进入运行状态
3. Event().clear() 使flag为false 然后程序会停止运行 进入阻塞状态
4. Event().is_set() 判断flag 是否为True 是的话 返回True 不是 返回false
from multiprocessing import Event,Process
import time
from datetime import datetime
from psutil import cpu_count def work(e,):
# 子进程
while True:
#print('我是子进程,我先休息!')
e.wait() #阻塞等待信号 这里插入了一个flag 默认为 false
print('[S] 这是我的定时任务!',datetime.now().second)
time.sleep(1) #信号:
#某一些用户链接的时候,Nginx就会做出相应
#Epoll: 信号|事件 #21点51分
def main():
e = Event()
a = int()
p = Process(target=work,name='子进程',args=(e,))
p.start()
while True:
if datetime.now().second > 10:
print('[F] 子进程取消阻塞状态')
e.set() #这里 等秒钟大于10S 就开启子进程 工作 使插入的flag为 True 然后继续执行
break
while True:
if datetime.now().second > 30:
print('[F] 子进程结束阻塞状态')
e.clear() #这里 等秒钟大于30S 就停止子进程工作 使插入的flag为false 就会停止子进程工作
break
time.sleep(5)#休息5s
e.set()#继续使flag 为真 然后执行子进程
print('[F] 又开启了')
time.sleep(5)#休息5s
e.clear()#继续使flag 为假 然后停止子进程
print('[F] 又停止了') if __name__ == '__main__':
main()
python 多进程 Event的使用的更多相关文章
- Python多进程编程
转自:Python多进程编程 阅读目录 1. Process 2. Lock 3. Semaphore 4. Event 5. Queue 6. Pipe 7. Pool 序. multiproces ...
- Python多进程使用
[Python之旅]第六篇(六):Python多进程使用 香飘叶子 2016-05-10 10:57:50 浏览190 评论0 python 多进程 多进程通信 摘要: 关于进程与线程的对比, ...
- Python多进程multiprocessing使用示例
mutilprocess简介 像线程一样管理进程,这个是mutilprocess的核心,他与threading很是相像,对多核CPU的利用率会比threading好的多. import multipr ...
- python 多进程开发与多线程开发
转自: http://tchuairen.blog.51cto.com/3848118/1720965 博文作者参考的博文: 博文1 博文2 我们先来了解什么是进程? 程序并不能单独运行,只有将程 ...
- day-4 python多进程编程知识点汇总
1. python多进程简介 由于Python设计的限制(我说的是咱们常用的CPython).最多只能用满1个CPU核心.Python提供了非常好用的多进程包multiprocessing,他提供了一 ...
- python 多进程 logging:ConcurrentLogHandler
python 多进程 logging:ConcurrentLogHandler python的logging模块RotatingFileHandler仅仅是线程安全的,如果多进程多线程使用,推荐 Co ...
- 【转】Python多进程编程
[转]Python多进程编程 序. multiprocessingpython中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Pytho ...
- 【转】【Python】Python多进程与多线程
1.1 multiprocessing multiprocessing是多进程模块,多进程提供了任务并发性,能充分利用多核处理器.避免了GIL(全局解释锁)对资源的影响. 有以下常用类: 类 描述 P ...
- python多进程详解
目录 python多进程 序.multiprocessing 一.Process process介绍 例1.1:创建函数并将其作为单个进程 例1.2:创建函数并将其作为多个进程 例1.3:将进程定义为 ...
随机推荐
- Entity Framework 6.x 学习之 - 创建带连接表的实体模型 with Database First
一.Modeling a Many-to-Many Relationship with No Payload 1. 创建数据库表 CREATE TABLE [Album] ( , ), ) COLLA ...
- SOA,Webservice,SOAP,REST,RPC,RMI的区别与联系
SOA,Webservice,SOAP,REST,RPC,RMI的区别与联系 SOA面向服务的软件架构(Service Oriented Architecture) 是一种计算机软件的设计模式,主要应 ...
- java 正则例子
1.不易开头.结尾:小数:圆角字符 包含数字.字母.圆角字符 不以<br/>开头.结尾,但中间可以存在 小数中的小数点是半角 正则表达式 "^(?!<br/>)(([ ...
- java运行jar包时候加载指定目录的其他jar支持包
最近发生一个小故障,调试好的项目,发布成jar包后无法找到oracle的驱动,研究了一下解决了.记录一下. 写了一个run.sh脚本 #!/bin/bash cd ~ cd app nohup jav ...
- log4j2配置文件log4j2.xml详解(转载)
此博文转载自阿豪聊干货:https://www.cnblogs.com/hafiz/p/6170702.html 一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2. ...
- JSON & Ajax
Ajax是异步JavaScript和XML是用来在客户端作为一组相互关联的Web开发技术,以创建异步Web应用程序. Ajax模型,Web应用程序可以发送数据和检索数据从一个服务器,而不干扰现有的页面 ...
- Java集合类源码解析:HashMap (基于JDK1.8)
目录 前言 HashMap的数据结构 深入源码 两个参数 成员变量 四个构造方法 插入数据的方法:put() 哈希函数:hash() 动态扩容:resize() 节点树化.红黑树的拆分 节点树化 红黑 ...
- leetcode958二叉树的完全检验-java
最近项目刚刚检查了,又有时间刷leetcode了,一道中等的树1个小时才通过,太久不做了.. 给定一个二叉树,确定它是否是一个完全二叉树. 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h, ...
- A计划 hdu2102(bfs一般题)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 基于std::mutex std::lock_guard std::condition_variable 和std::async实现的简单同步队列
C++多线程编程中通常会对共享的数据进行写保护,以防止多线程在对共享数据成员进行读写时造成资源争抢导致程序出现未定义的行为.通常的做法是在修改共享数据成员的时候进行加锁--mutex.在使用锁的时候通 ...