当前位置: 首页 > news >正文

个人网站开发实例上海画册设计

个人网站开发实例,上海画册设计,花生壳怎么做网站,wordpress默认排序一、介绍 全局解释锁#xff08;Global Interpreter Lock#xff0c;GIL#xff09;是在某些编程语言的解释器中使用的一种机制。在Python中#xff0c;GIL是为了保证解释器线程安全而引入的。 GIL的作用是在解释器的执行过程中#xff0c;确保同一时间只有一个线程可以…一、介绍 全局解释锁Global Interpreter LockGIL是在某些编程语言的解释器中使用的一种机制。在Python中GIL是为了保证解释器线程安全而引入的。 GIL的作用是在解释器的执行过程中确保同一时间只有一个线程可以执行Python字节码。这意味着在多线程的情况下同一时刻只有一个线程可以真正地执行Python代码其他线程只能等待。这是因为GIL会在解释器的关键部分进行加锁阻止其他线程的执行。 二、 对多线程 Python 程序的影响 CPU 密集型程序是那些将 CPU 推向极限的程序。这包括进行数学计算的程序如矩阵乘法、搜索、图像处理等。 I/O 绑定程序是花时间等待输入/输出的程序这些输入/输出可能来自用户、文件、数据库、网络等。I/O 绑定程序有时必须等待很长时间直到它们从源获得所需的内容因为源可能需要在输入/输出准备就绪之前进行自己的处理例如用户考虑在输入提示或在其自己的进程中运行的数据库查询中输入什么。 下面是一个多线程的程序 # single_threaded.py import time from threading import ThreadCOUNT 50000000def countdown(n):while n0:n - 1start time.time() countdown(COUNT) end time.time()print(Time taken in seconds -, end - start) 现在修改了代码以使用两个线程并行执行相同的倒计时代码 # multi_threaded.py import time from threading import ThreadCOUNT 50000000def countdown(n):while n0:n - 1t1 Thread(targetcountdown, args(COUNT//2,)) t2 Thread(targetcountdown, args(COUNT//2,))start time.time() t1.start() t2.start() t1.join() t2.join() end time.time()print(Time taken in seconds -, end - start) 再次运行结果如下 两个版本完成所需的时间几乎相同。在多线程版本中GIL 阻止 CPU 绑定线程并行执行。 GIL 对 I/O 绑定的多线程程序的性能没有太大影响因为在线程等待 I/O 时锁在线程之间共享。 但是线程完全受 CPU 限制的程序例如使用线程在部分中处理图像的程序不仅会因为锁而变成单线程而且执行时间也会增加如上例所示与编写为完全单线程的情况相比多线程增加的时间是由获取锁和释放锁带来的开销。   三、如何摆脱 Python 的全局锁的限制 1、使用多进程方法 每个 Python 进程都有自己的 Python 解释器和内存空间因此 GIL 不会成为问题。Python 有一个多进程multiprocessing 模块它让我们可以轻松地创建这样的进程 from multiprocessing import Pool import timeCOUNT 50000000 def countdown(n):while n0:n - 1if __name__ __main__:pool Pool(processes2)start time.time()r1 pool.apply_async(countdown, [COUNT//2])r2 pool.apply_async(countdown, [COUNT//2])pool.close()pool.join()end time.time()print(Time taken in seconds -, end - start) 与多线程版本相比性能有所提高。 2、使用 使用并发库比如cython 、asyncio、gevent、eventlet 等。这些库使用非阻塞 I/O 和协程等技术可以在单个线程中实现高效的并发处理避免 GIL 的限制。来避开全局锁 3、使用替代Python解释器 Python有多个解释器实现。CPythonJythonIronPython和PyPy分别用CJavaC#和Python编写是最受欢迎的。GIL 只存在于 CPython 的原始 Python 实现中。如果你的程序及其库可用于其他实现那么也可以尝试使用它们。当然使用非官方解释器的代价是无法使Cython.   参考 什么是Python全局锁(GIL)如何避开GIL限制_python 全局锁___弯弓__的博客-CSDN博客
http://www.dnsts.com.cn/news/144345.html

相关文章:

  • 怎样做英文网站济南网站建设 推搜点
  • 怡康医药网站建设方案优化方案历史
  • 网站网页设计制作vi设计公司形象墙
  • 哈密网站制作莱芜金点子传媒电子版
  • 中国设计网站官网地址无需下载即可观看网页
  • 如何查询网站打开速度变慢中国产品网企业名录
  • 永兴城乡住房建设部网站服务公司取名字大全
  • 三明做网站公司长沙整合推广
  • 全国有哪些做服装的网站张家口市建设局网站
  • wordpress建好站了打不开首页上海网站建设公司怎么分辨好坏
  • 福建省龙岩市建设培训中心网站网站方案书免费
  • wordpress 博客程序网络优化工程师现状
  • 建设网站做什么赚钱sogou网站提交
  • 单位网站建设制作ps做网站像素大小
  • 湖北网站建设网址3g 手机网站建设
  • 如何用wordpress搭建网站陕西建设分行网站
  • 潍坊响应式网站建设要多久小程序如何注册步骤
  • 兴国网站建设如何在自己网站做解析api
  • 网站建设与设计摘要网站推广外包公司哪家好
  • 史志网站建设wordpress服装插件
  • 域名注册和网站哪个好学校后勤网站建设方案
  • 谷歌网站怎么设置才能打开网站国外做农产品有名的网站有哪些
  • 网站建设的销售好做吗怎么设计图片
  • 网站模板修改专门做超市海报的网站
  • ps 做网站切图华大集团 北京网站建设
  • 速升网网站是多少钱建站用哪个模板好
  • 贵阳做网站seo东莞最近发生了什么大事
  • 四川旅游seo整站优化岳阳市 网站建设
  • 诸城网站建设葛小燕网站开发的英文书有什么软件
  • 宁夏建设厅网站旧版北京和隆优化招聘