博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python人工智能基础 12day(上)
阅读量:6194 次
发布时间:2019-06-21

本文共 655 字,大约阅读时间需要 2 分钟。

全局解释器锁(GIL)

描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因。

1.python语言与GIL并无关系,只是因为python语言的解释器是Cpython,从而GIL难以从python中移除。

2.全局解释器锁GIL,每个线程在执行过程中都需要先获取GIL,保证同时刻只有一个线程可以执行代码。

3.线程释放GIL锁的情况:在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执行完毕后,必须重新获取GIL Python 3.x使用计时器(执行时间达到阈值后,当前线程释放GIL)或Python 2.x,tickets计数达到100

4.python 使用多进程是可以使用多核CPU资源的。

5.多线程爬取比单线程性能有提升,因为遇到IO阻塞会自动释放GIL锁。

深拷贝与浅拷贝

1.浅拷贝

对一个对象的顶层拷贝。(只拷贝了引用,没有拷贝内容)

2.深拷贝

对一个对象的所有层次进行拷贝。(递归)

进一步分析

3.拷贝的其他方式

分片表达式与copy.copy()一样属于浅拷贝

4.浅拷贝对可变类型和不可变类型的copy不同

copy.copy对于可变类型(数字、字符串、元组),会进行浅拷贝

copy.copy对于不可变类型(列表、字典),不会拷贝,仅仅是指向

转载于:https://juejin.im/post/5c3083ae518825233b4e5f53

你可能感兴趣的文章
数据结构
查看>>
leetcode 228: Summary Ranges
查看>>
Hadoop- Hadoop详解
查看>>
数据结构C++ 队列——队列的应用
查看>>
Kubernetes 集群使用 Jenkins 持续发布
查看>>
我的友情链接
查看>>
BGP 路由反射器
查看>>
linux并发连接数查看
查看>>
快捷创建H-v虚拟机
查看>>
python版春节倒计时实时显示
查看>>
Skype for Business Server 2015-11-Web Application Proxy-部署
查看>>
(译)如何使用cocos2d来制作一个塔防游戏:第一部分
查看>>
微信支付申请90%的商户都卡在这儿了,申请微信支付,商户功能设置详细说明...
查看>>
开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
查看>>
Penetration test
查看>>
hive的查询注意事项以及优化总结 .
查看>>
CMD魔法堂:支持显示UTF8编码的中文
查看>>
【插件开发】—— 11 窃听风云(Java事件监听原理-GEF实例讲解)
查看>>
机器学习技法--学习笔记03--Kernel技巧
查看>>
Android中Webview使用自定义的javascript进行回调
查看>>