摘要: Python提供的Condition对象提供了对复杂线程同步问题的支持。Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还提供了wait和notify方法。线程首先acquire一个条件变量,然后判断一些条件。如果条件不满足则wait;如果条件满足,进 阅读全文
posted @ 2018-09-03 15:16 运维00001 阅读(322) 评论(0) 推荐(0)
摘要: 信号量是一个变量,控制着对公共资源或者临界区的访问。信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数。每次有一个线程获得信号量时,计数器-1。若计数器为0,其他线程就停止访问信号量,直到另一个线程释放信号量。 信号量是一个变量,控制着对公共资源或者临界区的访问。信号量维护着一个计数器 阅读全文
posted @ 2018-09-03 13:25 运维00001 阅读(338) 评论(0) 推荐(0)
摘要: 多个线程同时操作一个变量 同步锁,acquire和release之间的代码,在同一时间只会被一个线程执行 死锁 解决死锁 -- RLock 阅读全文
posted @ 2018-08-30 13:37 运维00001 阅读(199) 评论(0) 推荐(0)
摘要: 多线程的调用 直接调用 import threading import time #定义每个线程要运行的函数 def my_func(num, **kwargs): print("%s running on number:%s" % (kwargs['name'], num)) time.sleep 阅读全文
posted @ 2018-08-28 16:40 运维00001 阅读(139) 评论(0) 推荐(0)
摘要: 并发通信 阅读全文
posted @ 2018-08-28 16:03 运维00001 阅读(138) 评论(0) 推荐(0)
摘要: socket通信流程 socket通信流程 粘包问题 粘包问题 由于sendall()在发送数据前要检查是否还有要发送的数据,虽然这个等待检查的过程很短,但是也有一定的几率造成原本要多次发送的数据,变成了一次全部发送。 通过在两个sendall()之间加一段conn.recv(1024)解决 发送非 阅读全文
posted @ 2018-08-25 08:40 运维00001 阅读(101) 评论(0) 推荐(0)
摘要: class C: __instance = None def __init__(self): pass @classmethod def instance(cls): if cls.__instance is None: cls.__instance = C() return cls.__... 阅读全文
posted @ 2018-08-24 15:57 运维00001 阅读(138) 评论(0) 推荐(0)
摘要: getattr() setattr() hasattr() delattr() 阅读全文
posted @ 2018-08-24 14:14 运维00001 阅读(183) 评论(0) 推荐(0)
摘要: 异常的种类 语法结构 主动抛出异常 自定义异常 断言:如果断言语句为真,代码继续执行,如果为假,则抛出AssertionError异常 阅读全文
posted @ 2018-08-24 11:32 运维00001 阅读(137) 评论(0) 推荐(0)
摘要: 用metaclass来指定类C的元类是MyType class MyType: def __init__(cls, *args, **kwargs): print('here!') #由于metaclass=MyType,所以执行到这一步的时候,会调用MyType的构造函数 class C(meta 阅读全文
posted @ 2018-08-23 11:59 运维00001 阅读(103) 评论(0) 推荐(0)