利用wait的阻塞机制, 就能够实现暂停和恢复了, 再配合循环判断标识位, 就能实现退出了

#!/usr/bin/env python

# coding: utf-8

import threading

import time

class Job(threading.Thread):

def __init__(self, *args, **kwargs):

super(Job, self).__init__(*args, **kwargs)

self.__flag = threading.Event() # 用于暂停线程的标识

self.__flag.set() # 设置为True

self.__running = threading.Event() # 用于停止线程的标识

self.__running.set() # 将running设置为True

def run(self):

while self.__running.isSet():

self.__flag.wait() # 为True时立即返回, 为False时阻塞直到内部的标识位为True后返回

print time.time()

time.sleep(1)

def pause(self):

self.__flag.clear() # 设置为False, 让线程阻塞

def resume(self):

self.__flag.set() # 设置为True, 让线程停止阻塞

def stop(self):

self.__flag.set() # 将线程从暂停状态恢复, 如何已经暂停的话

self.__running.clear() # 设置为False

测试代码

a = Job()

a.start()

time.sleep(3)

a.pause()

time.sleep(3)

a.resume()

time.sleep(3)

a.pause()

time.sleep(2)

a.stop()

python多线程控制暂停_python多线程控制相关推荐

  1. python 多线程读写文件_python多线程同步之文件读写控制

    本文实例为大家分享了python多线程同步之文件读写控制的具体代码,供大家参考,具体内容如下 1.实现文件读写的文件ltz_schedule_times.py #! /usr/bin/env pyth ...

  2. python多核多线程编程实例_Python多线程

    多线程基础概念 并行与并发并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 并发手段线程:内核空间的调度 进程:内核空间的调度 协程:用户空间的调度 线程可以允许程 ...

  3. python web框架 多线程和多进程_python 多线程和多进程

    多线程与多进程 知识预览 一 进程与线程的概念 二 threading模块 三 multiprocessing模块 四 协程 五 IO模型 回到顶部 一 进程与线程的概念 1.1 进程 考虑一个场景: ...

  4. python实用程序育儿法_Python多线程 简明例子

    Python多线程 简明例子 (2010-03-11 15:15:09) Python多线程 简明例子 综述 多线程是程序设计中的一个重要方面,尤其是在服务器Deamon程序方面.无论何种系统,线程调 ...

  5. python真正实现多线程的方法_python多线程几种方法实现

    匿名用户 1级 2018-05-27 回答 Python进阶(二十六)-多线程实现同步的四种方式 临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能, ...

  6. python多线程的作用_Python多线程中三个函数的强大功能简介

    在Python多线程中有三个比较简单的函数,在实际的相关操作中你对这一实际操作是否了解?是否对其感兴趣?如果你想对Python多线程的开发与多线程程序及相关实际操作方案有所了解的话,你就可以点击以下的 ...

  7. python多线程共享全局变量_Python多线程-共享全局变量

    多线程-共享全局变量 import threading import time g_num = 200 def test1(): global g_num for i in range(5): g_n ...

  8. python多线程控制暂停_python中的多线程编程与暂停、播放音频的结合

    我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦s ...

  9. python进程数上限_python如何控制进程或者线程的个数

    背景 日常开发中,难免遇到并发场景,而并发场景难免需要做流量控制,即需要对并发的进程或者线程的总量进行控制. 今天简单总结两种常用的控制线程个数的方法. 方法一:进程池/线程池 如下例demo所示, ...

最新文章

  1. 程序员的“认知失调”
  2. vs.net2003在代理下的一个奇怪小问题
  3. Equipment download和自动生成的IBASE DB 信息
  4. javascript事件处理程序
  5. Java的三种代理模式完整源码分析
  6. 【three.js】库
  7. 腾讯总监周颢:亿级用户微信采用的架构宝典
  8. postgresql 修改表字段_关于一些postgresql特有的概念以及安装方法的叙述
  9. 数据挖掘-理解业务和数据(二)
  10. iphone用计算机显示器,如何将iPhone屏幕投射到电脑上
  11. 百度地图开发(一)----项目准备
  12. 网络编程、通信三要素、UDP快速入门、TCP通信、即时通信、模拟BS系统
  13. UI设计培训分享:UI设计的职业发展路径
  14. CTF-SQL注入入门题型
  15. Windows命令行打开常用设置/控制面板功能
  16. STM32F429i disco 体验
  17. tensorboard使用界面介绍以及使用方法(看这篇就够了,都有源码可以直接测试)
  18. mysql主从同步的三种模式
  19. 欧格教育:怎么提升店铺流量
  20. 任务栏的浏览器(包括chrome、IE、firefox等)主页被劫持

热门文章

  1. Cron 触发器及相关内容 (第三部分)
  2. vscode插件推荐
  3. html th表格居中,HTML----之表格
  4. redis应用场景java实例_redis使用场景和java测试案例
  5. Eclipse/STS 在线安装阿里java代码规约插件
  6. LINUX系统用户操作命令
  7. 345. Reverse Vowels of a String - LeetCode
  8. request.path 值危险
  9. 数据分析应用统计学之分散性与变异性的测量【极差、四分位差、偏态系数、峰态系数、统计指标】
  10. 深入理解C语言系列之C语言语法陷阱(考题常设置的陷阱点、必须避免的错误和缺陷类型)