2017年6月22日

python网络编程--线程Semaphore(信号量)

摘要: 一:Semaphore(信号量) 互斥锁 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 ,比如厕所有3个坑,那最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去。 阅读全文

posted @ 2017-06-22 14:50 shisanjun 阅读(184) 评论(0) 推荐(0) 编辑

python网络编程--线程递归锁RLock

摘要: 一:死锁 所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程成为死锁进程。多个lock会造成死锁 二:递归锁和线程锁差异 在threading模块中,定义两种 阅读全文

posted @ 2017-06-22 14:47 shisanjun 阅读(186) 评论(0) 推荐(0) 编辑

python网络编程--线程锁(互斥锁Mutex)

摘要: 一:为什么需要线程锁 一个进程下可以启动多个线程,多个线程共享父进程的内存空间,也就意味着每个线程可以访问同一份数据,此时,如果2个线程同时要修改同一份数据,会出现什么状况? 很简单,假设你有A,B两个线程,此时都 要对num 进行减1操作, 由于2个线程是并发同时运行的,所以2个线程很有可能同时拿 阅读全文

posted @ 2017-06-22 14:29 shisanjun 阅读(431) 评论(0) 推荐(0) 编辑

python网络编程--线程join和Daemon(守护进程)

摘要: 一:什么情况下使用join join([timeout])调用join函数会使得主调线程阻塞,直到被调用线程运行结束或超时。 参数timeout是一个数值类型,用来表示超时时间,如果未提供该参数,那么主调线程将一直阻塞直到被调用线程结束 二:Daemon setDaemon()可以参考Python文 阅读全文

posted @ 2017-06-22 10:36 shisanjun 阅读(560) 评论(0) 推荐(0) 编辑

python网络编程--线程使用threading

摘要: 一:线程使用 线程使用有两种方法,一种是直接使用,二是通过继承threading.Thread类使用 二:函数式使用 函数式:调用thread模块中的start_new_thread()函数来产生新线程。语法如下: function - 线程函数。 args - 传递给线程函数的参数,他必须是个tu 阅读全文

posted @ 2017-06-22 10:28 shisanjun 阅读(163) 评论(0) 推荐(0) 编辑

python网络编程--线程GIL(全局解释器锁)

摘要: 一:什么是GIL 在CPython,全局解释器锁,或GIL,是一个互斥体防止多个本地线程执行同时修改同一个代码。这把锁是必要的主要是因为当前的内存管理不是线程安全的。(然而,由于GIL存在,其他特性已经发展到依赖于它强制执行的保证)。 上面的核心意思就是,无论你启多少个线程,你有多少个cpu, Py 阅读全文

posted @ 2017-06-22 10:16 shisanjun 阅读(138) 评论(0) 推荐(0) 编辑

python网络编程--进程线程

摘要: 一:什么是进程 一个程序执行时的实例被称为一个进程。 每个进程都提供执行程序所需的资源。一个进程有一个虚拟地址空间、可执行代码、对系统对象的开放句柄、一个安全上下文、一个独特的进程标识符、环境变量、一个优先级类、最小和最大工作集大小,以及至少一个执行线程。每个进程以一个线程开始,通常称为主线程,但可 阅读全文

posted @ 2017-06-22 10:12 shisanjun 阅读(146) 评论(0) 推荐(0) 编辑

导航