运行结果:此时是没有阻塞的
但是入队了一条数据之后:
阻塞了。
即使用get( )方法使其出队,也同样无法解决阻塞问题。
解决方法:变量名.task_done( )
可重复利用线程:
线程池的实现:
运行结果:
实际的开发中,是不需要写这些代码的。
因为有内置的进程池
使用池来实现并发服务器:
这是获取系统的核心数(我的电脑核心数为20个)
通常线程是可以分配为进程核心数的两倍。
这是利用线程池写的并发服务器
客户端:
运行结果:(开始时间)
(结束时间)
两秒时间运行完成。(每秒5万条)
协程:程序与程序之间相互协作完成(这个概念是Python独有)
运行结果:
第三方包导入实现协程:
下载命令:pip install greenlet (在终端中打开输入此命令)
这里是已经下载完毕了。
注意,不能使用Python的关键字命名py文件。
运行结果:
总结:
进程:操作系统。
线程:CPU。
协程:自己编写的程序进行调度。