课后习题
请使用并发任务模型同时访问 5 个网站,并将网页的数据存储到不同的文件中。
课程代码、课件及其他相关资料地址
https://gitee.com/wilsonyin/zero-basics-python
作者回复: max_workers 没有推荐的数值,因为线程的工作量不同,执行时间长短不同,还有最重要的CPU性能不同。都会导致设置的值不同。要根据实际需求来制定。 例如我之前的工作中使用nginx作为web服务器提供网页服务,nginx就是典型的多进程多线程服务器。进程数量,往往和逻辑CPU数量相同,如果提供的是php网页,且网页多为简单页面和图片,可以将每个核心的线程数量设置为10个,每个线程轮流处理,且不会导致用户卡顿,当短视频业务兴起时,后端是短视频服务器,会减少线程数量,因为用户每次请求和响应时长增加了,业务“重”了, 这时会减少线程数量,让用户不觉得卡顿,也让服务器的CPU占用率低于80% 。 这就是基于不同业务逻辑进行线程数量设置的基本方法 简单来说是一只蜘蛛有一张嘴和八条腿,如果每条腿都拿勺子吃饭,要考虑嘴的大小,勺子的大小,勺子里面的饭的多少,让蜘蛛吃饱又不闲着,让嘴里放得下,勺子也不空着
作者回复: 首先,导入多线程的库,再实例化一个锁对象, 加锁,之后在不需要解决锁冲突的地方释放锁。具体代码如下: import threading lock = threading.Lock() # 初始化一个锁对象 for i in range(1, 100): lock.acquire() #申请锁 sum += 1 lock.release() #释放锁