也许这会有帮助:import threading

class MyQueue:

def __init__(self):

self.tasks = []

self.tlock = threading.Semaphore(0)

self.dlock = threading.Lock()

self.aborted = False

def put(self, arg):

try:

self.dlock.acquire()

self.tasks.append(arg)

finally:

self.dlock.release()

self.tlock.release()

def get(self):

if self.aborted:

return None

self.tlock.acquire()

if self.aborted:

self.tlock.release()

return None

try:

self.dlock.acquire()

if self.tasks:

return self.tasks.pop()

else: # executed abort

return None

finally:

self.dlock.release()

def abort(self):

self.aborted = True

self.tlock.release()

# TESTING

mq = MyQueue()

import sys

def tlog(line):

sys.stdout.write("[ %s ] %s\n" % (threading.currentThread().name, line))

sys.stdout.flush()

def reader():

arg = 1

while arg is not None:

tlog("start reading")

arg = mq.get()

tlog("read: %s" % arg)

tlog("END")

import time, random

def writer():

try:

pos = 1

while not mq.aborted:

x = random.random() * 5

tlog("writer sleep (%s)" % x)

pending = x

while pending > 0:

tosleep = min(0.5, pending)

if mq.aborted:

return

time.sleep(tosleep)

pending -= tosleep

tlog("write: %s" % x)

mq.put("POS %s val=%s" % (pos, x))

pos += 1

finally:

tlog("writer END")

def testStart():

try:

for i in xrange(9):

th = threading.Thread(None, reader, "reader %s" % i, (), {}, None)

th.start()

for i in xrange(3):

th = threading.Thread(None, writer, "writer %s" % i, (), {}, None)

th.start()

time.sleep(30) # seconds for testing

finally:

print "main thread: abort()"

mq.abort()

if __name__ == "__main__":

testStart()

python死机怎么办_Python线程死机相关推荐

  1. 主线程 子线程死掉_当线程死时,子进程也会死

    我有一个程序可以触发Python计时器来生成子进程.一旦程序终止或终止,这些子进程就应该终止.为了做到这一点,我使用了"prctl hack",它设置了一旦父对象死亡,子对象应该接 ...

  2. python多线程队列处理_Python线程和队列使用的一点思考

    Python线程和队列使用的一点思考 1. 斗哥采访环节请问为什么要使用线程? 答:为了提高程序速度,代码效率呀. 请问为什么要使用队列? 答:个人认为队列可以保证线程安全,实现线程间的同步,比较稳. ...

  3. python蓝牙上位机开发_python做上位机 - osc_2frv0wjp的个人空间 - OSCHINA - 中文开源技术交流社区...

    参考文章: https://blog.csdn.net/dgut_guangdian/article/details/78391270 https://www.cnblogs.com/lanceyu/ ...

  4. python 异步 生产者 消费者_python 线程通信 生产者与消费者

    1 """ 2 线程通信的生产者与消费者3 python的queue模块中提供了同步的线程安全的队列类,都具有原子性,实现线程间的同步4 Queue (FIFO: fis ...

  5. python timer详解_python线程定时器Timer实现原理解析

    这篇文章主要介绍了python线程定时器Timer实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.线程定时器Timer原理 原理比较 ...

  6. python 定时器实现原理_python线程定时器Timer实现原理解析

    这篇文章主要介绍了python线程定时器Timer实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.线程定时器Timer原理 原理比较 ...

  7. iphone定时关机_成都苹果维修点教你iPhone手机死机、关不了机怎么处理?

    死机,是每一个手机都难免会碰到的问题.纵然流利如iPhone手机,也免不了死机.手机屏幕失灵.关不了机等故障.今天,成都苹果维修点就来教大家iPhone手机死机.关不了机该怎么处理? 如果你有什么关于 ...

  8. 三星电视显示服务器无响应,三星液晶电视死机怎么办 三星液晶电视死机解决方法...

    用智能电视看视频.玩游戏已经是现在生活中常见的场景了.我们经常会下载各种好玩的游戏和好看的视频,可能时不时会有一些闪退卡顿的小问题,偶尔还会遇到电视死机,智能电视死机了怎么办?马上回复出厂设置?马上去 ...

  9. python系统工作原理_Python之路——堡垒机原理及其简单实现

    1 堡垒机基本概述 其从功能上讲,它综合了核心系统运维和安全审计管控两大主干功能,从技术实现上讲,通过切断终端计算机对网络和服务器资源的直接访问,而采用协议代理的方式,接管了终端计算机对网络和服务器的 ...

最新文章

  1. Linux 执行文件查找命令 which 详解
  2. idea maven打包_20201116(Maven学习)
  3. [转载]工作面试时最难的25个问题
  4. python虚拟环境拷贝到另一台电脑,不能直接使用的问题
  5. 4款.Net报表控件优势对比分析
  6. 宏定义 object-c 单例
  7. Python进阶:并发编程之Asyncio
  8. Spark学习笔记6:Spark调优与调试
  9. 第001讲 html介绍 html运行原理
  10. 哈希表与区块链的简单介绍
  11. mysql - InnoDB存储引擎 死锁问题( Deadlock found when trying to get lock; try restarting transaction )...
  12. linux lasound.so教程,Linux ALSA 音频系统:逻辑设备篇(示例代码)
  13. 烽火交换机S2000单独划分VLAN的方法
  14. 【verilog】 AB相旋转编码器驱动(fpga,正交编码器,霍尔编码器驱动)
  15. 郎咸平:用友和金蝶的长板在哪儿
  16. 【12月原创】RT-thread - 柿饼UI学习心得分享
  17. 关于STM32 IAP升级之为什么APP执行要0x2FFE0000这个数值的原因(基于STM32F446RET6)
  18. 如何使用计算机勾绘汇水面积,汇水面积怎么计算
  19. Excel读写合集:Excel读写小白从不知所措到轻松上手
  20. 计算机十一月份成绩,CPU天梯图2018年11月最新版 十一月台式电脑CPU性能排行

热门文章

  1. 尾款人的双11焦虑症:配送机器人能解?
  2. 正则表达式 语法 分组
  3. Android Bitmap 蒙版使用
  4. 计算机构弹性振动振型的软件,《PKPM软件在应用中的问题解析》讲义(十九)
  5. ppt模板文字处理方式有哪些?
  6. weak-自动置nil机制
  7. Part 12(2) 含参广义积分(含参无穷积分和瑕积分)
  8. autoCAD 控制应用程序窗口 和 图形窗口
  9. 还在迷恋垂直细分生意的创业者们,该醒醒了
  10. 刷机精灵android版授权教程6,刷机精灵 2.4.6.3 最新版