Python面试:什么是GIL

这篇具有很好参考价值的文章主要介绍了Python面试:什么是GIL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. GIL (Global Interpreter lock)可以避免多个线程同时执行字节码。

import threading

lock = threading.Lock()

n = [0]

def foo():
  with lock:
    n[0] = n[0] + 1
    n[0] = n[0] + 1

threads = []
for i in range(5000):
  t = threading.Thread(target=foo)
  threads.append(t)

for t in threads:
  t.start()

print(n)

Python面试:什么是GIL,Python,python,面试,开发语言

2. 使用dis操作来分析字节码

import dis

def update_list(l):
  l[0] = 1

dis.dis(update_list)

输出为:
4 0 LOAD_CONST 1 (1)
2 LOAD_FAST 0 (l)
4 LOAD_CONST 2 (0)
6 STORE_SUBSCR
8 LOAD_CONST 0 (None)
10 RETURN_VALUE

“STORE_SUBSCR”,可见只有单节字码操作。

def incr_list(l):
  l[0] += 1

dis.dis(incr_list)

输出为:
2 0 LOAD_FAST 0 (l)
2 LOAD_CONST 1 (0)
4 DUP_TOP_TWO
6 BINARY_SUBSCR
8 LOAD_CONST 2 (1)
10 INPLACE_ADD
12 ROT_THREE
14 STORE_SUBSCR
16 LOAD_CONST 0 (None)
18 RETURN_VALUE
可见需要多个字节码操作,有可能在线程执行过程中切到其他线程。文章来源地址https://www.toymoban.com/news/detail-681138.html

到了这里,关于Python面试:什么是GIL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python黑魔法揭秘:装饰器、生成器、异步编程、GIL、描述符和元类

    Python中的某些特性被看作是“黑魔法”,原因在于它们的强大功能和复杂性。接下来,让我们深入探索这些特性。 装饰器是修改函数或类行为的强大工具,它提供了一种可读性强、代码重用的方式来增强或修改函数或类的行为。装饰器就像一个包裹原函数或类的外壳,能够在

    2024年02月14日
    浏览(46)
  • Python测试开发面试题

    1.请解释什么是Python中的装饰器(decorators),并提供一个实际的例子。 2.在Python中,你如何处理异常(exceptions)?请提供一个示例代码。 3.什么是Python中的单元测试?请提供一个基本的单元测试示例。 4.如何使用Python中的mock库进行单元测试中的模拟(mocking)? 5.请解释Pyt

    2024年01月17日
    浏览(41)
  • python语言能干什么?

    Python是一种高级的、面向对象的编程语言,它可以用于开发各种类型的应用程序,包括Web应用、桌面应用、移动应用等。Python语言具有很多优点,它的语法简洁易懂,开发效率高,代码可读性强,适合初学者入门,同时也是专业开发人员的首选语言之一。下面我们将详细介绍

    2023年04月23日
    浏览(27)
  • python测试开发面试常考题:装饰器

    Python 装饰器是一个可调用的(函数、方法或类),它获得一个函数对象 func_in 作为输入,并返回另一函数对象 func_out。它用于扩展函数、方法或类的行为。 装饰器模式通常用于扩展对象的功能。在日常生活中,这种扩展的例子有:在枪上加一个消音器,使用不同的相机镜头等等

    2024年02月10日
    浏览(97)
  • 【Python 基础】输入两个数,求它们的求最大公约数(伪码描述 + Python实现)| 区块链 面试题:区块链技术中的“闪电网络”是什么?有什么作用?

      “这样的年代没有谁是值得信任的,你只能靠自己。”     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿   🌟[3] 2022年度博客之星人工智能领域TOP4🌟   🏅[4] 阿里云社区特邀专家博

    2024年02月01日
    浏览(71)
  • 面试需要讲什么功能强大的python包:selenium,【一篇文章搞懂

    在操作测试对象中,send_keys( )中可以传递键盘事件,相当于我们按下一下特殊的按键。 键盘事件 | 键盘事件 | 代码实现 | | — | — | | TAB | send_keys(Keys.TAB) | | ENTER | send_keys(Keys.ENTER) | | BackSpace | send_keys(Keys.BackSpace) | | Space | send_keys(Keys.Space) | | Esc | send_keys(Keys.Esc) | | F1 | send_keys

    2024年04月12日
    浏览(41)
  • Lingo软件入门【数学建模】,面试Python开发十大问题

    II.III 变量赋值区域 赋值模块顾名思义是涉及到给变量赋值,但这里的变量特指是集合变量,因为其他的单个的决策变量,可以直接在定义时赋值,只有集合变量涉及到定义和赋值分开。 该模块以data:开头,以enddata结尾,因此所有对集合的赋值操作都要在这个区域内完成。

    2024年04月26日
    浏览(51)
  • 为什么Python是数据科学家的首选语言

    这篇文章全面探讨了Python作为数据科学领域首选语言的原因。从Python的历史、特性,到在数据科学中的应用实例,再到与其他数据科学语言的比较,以及在实际企业中的应用,我们深入剖析了Python的优势与挑战,最后对Python的未来进行了展望。 在21世纪的数据时代,数据科学

    2024年02月16日
    浏览(48)
  • 面试hrd需要注意什么,scikit-image 中用于图像分割的阈值算法,GitHub上标星13k的《Python面试突击版》

    thresh_otsu = threshold_otsu(gray_image) binary_otsu = gray_image thresh_otsu binary_otsu = img_as_ubyte(binary_otsu) thresh_niblack = threshold_niblack(gray_image, window_size=25, k=0.8) binary_niblack = gray_image thresh_niblack binary_niblack = img_as_ubyte(binary_niblack) thresh_sauvola = threshold_sauvola(gray_image, window_size=25) binary_sauvola = gra

    2024年04月25日
    浏览(34)
  • 【pygame游戏开发】这几个经典游戏,小红书Python面试题目

    pygame.time.set_timer(change_hole_event, 800) mole = Mole(cfg.MOLE_IMAGEPATHS, hole_pos) hammer = Hammer(cfg.HAMMER_IMAGEPATHS, (500, 250)) clock = pygame.time.Clock() your_score = 0 flag = False init_time = pygame.time.get_ticks() while True: time_remain = round((61000 - (pygame.time.get_ticks() - init_time)) / 1000.) if time_remain == 40 and not flag: hole

    2024年04月25日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包