Python Cookbook中关于并发的例子
摘要:1、自定义线程terminal方法 效果:5秒后线程“自动关闭” 2、基于线程池实现并发的socket Server端 server端: client端: 3、利用QUeue手动实现线程池的效果(用ThreadPoolExecutor实现!这样的优势在于使得任务的提交者能够更容易从调用函数中取得结果
阅读全文
5个线程:t1、t2先关闭,t3在t4与t5之后关闭
摘要:将t3设置成守护线程! # -*- coding:utf-8 -*- import time from threading import Thread def task(name): print('%s is running...'%name) time.sleep(0.1) print('%s i
阅读全文
生产者消费者模型
摘要:一:多线程实现 效果: 二:多进程实现 效果:
阅读全文
线程2 —— enumerate方法、守护线程、线程锁、死锁现象(递归锁与互斥锁)、线程队列、进程池与线程池
摘要:一:threading的enumerate方法:返回正在运行的Thread对象列表 (1)正常的写法: # -*- coding:utf-8 -*- import time from threading import Thread,enumerate def func(name): print('%
阅读全文
线程 —— 基本概念、线程的基础操作(阻塞与延迟的理解)、多线程与多进程的效率差、数据共享问题、线程的其他方法
摘要:一个需要注意的点 —— CPU只管发指令,不管执行的顺序! 一:线程的概念 1、线程:轻型进程/轻量级进程特点:(1)、在同一个进程中的多个线程是可以共享一部分数据的!(2)、线程的开启、销毁、切换都要比进程高效很多! ## 线程是进程中的一个单位 ## 进程是计算机中最小的资源分配单位 ## 线程
阅读全文
进程关于数据共享
摘要:进程之间的数据安全问题 1、数据共享: (1) 进程之间数据不共享 是隔离的 (2-2)加锁解决 ———— 但变成同步的程序了
阅读全文
put_nowait与get_nowait
摘要:直接上结论: put与get方法是两个阻塞方法:put不到值程序夯住,get不到程序也夯住。 put_nowait与get_nowait方法是两个非阻塞方法:put_nowait没有值的话不等,get_nowait取不到值也不等了,程序不会夯住,但是一定要做异常处理! 先看下面这段代码: 结果为:
阅读全文
TCP传输时为避免粘包-根据协议传输-构建发送与接收携带信息的字典
摘要:特别注意: 1、这两个函数中的默认参数pro很重要: (1)默认情况下“按照协议传输”:就是说,一定会传输“未知大小并且比较大的数据(大文件、携带一长串信息的字符串等)”,为了避免粘包,所以我们需要在发送这个数据之前传给接收方我们这个数据的具体信息(转换成bytes的大小、名字等等),所以会用str
阅读全文
网络编程的基本概念
摘要:# 操作系统的发展历程 # 主要的人机矛盾是什么 : CPU的使用率 # 输入\输出数据和CPU计算没有关系 # 操作系统是怎么进化的 # 传统的纸带输入 # 磁带的存储降低了输入输出数据占用的时间,提高了CPU的利用率 # 多道操作系统的出现 : 提高了CPU的利用率,单纯的切换会浪费时间 ...
阅读全文
进程间通信——生产者消费者模型
摘要:1、一些重要概念 ***** 进程队列 : *** 队列是进程安全(进程间数据安全-多个进程不能同时操作同一个文件、数据库等)的!因为它自己带锁 *** 队列,实际上是基于'文件家族的socket服务'实现的!在运行队列的文件的同目录如果创建一个名为socket.py文件的话,执行时候会报错! ##
阅读全文
锁的概念以及 模拟抢票练习
摘要:一、重要概念 二、代码 推荐利用“上下文管理”的方法加锁: 当然,在buy函数中,不用上下文管理的话,可以这样写: tickets文件中的内容如下(注意,要用json读取的话字典中字符串必须用双引号) 效果如下:
阅读全文
开启进程的 两种方式
摘要:重要结论: 1、p.join([timeout]):是Process模块给我们提供的对子进程同步管理的方法! timeout是可选的超时时间,如 timeout=2 就是罩着这个线程2s 以后,就不管他了,继续执行下面的代码。 2、主线程等待p终止(强调:是主线程处于等的状态,而p是处于运行的状态)
阅读全文
进程之间的内存空间是隔离的
摘要:结果: 主进程的n: 100子进程的n: 0
阅读全文