zoukankan      html  css  js  c++  java
  • GIL全局解释器锁

    ‘’‘

    1.GIL全局解释器锁:
    1.GIL是Cpython特有的。
    2.GIL本质上是一个互斥锁.
    3.GIL的为了阻止同一个进程内多个线程同时执行(并行)

        - 单个进程下的多个线程无法实现并行,但能实现并发
        4.这把锁主要是因为CPython的内存管理不是 "线程安全" 的.
        		- 保证线程在执行任务时不会被垃圾回收机制回收。
    

    2.GIL存在的目的:
    GIL的存在就是为了保证线程安全的.

    注意: 多个线程过来执行,一旦遇到IO操作,就会立马释放GIL解释器锁,交给下一个先进来的线程.
    

    3.何时使用多进程或多线程?
    - 在计算密集型的情况下:
    - 使用多进程

    - 在IO密集型的情况下:
        - 使用多线程
    
    - 高效执行多个进程,内多个IO密集型的程序:
        - 使用 多进程 + 多线程
        - 
    

    '''
    4.服务端实现并发

    import socket
    from threading import Thread
    import time
    
    """
    服务端:
        1.有固定的IP和PORT
        2.24小时不间断提供服务
        3.能够支持并发
    """
    server = socket.socket()
    
    server.bind((
        '127.0.0.1', 9550
    ))
    
    server.listen(5)
    print('启动服务端。。。')
    
    
    def working(conn):
        while True:
            try:
                data = conn.recv(1024)
                if len(data) == 0:
                    break
                print(data.decode('utf-8'))
                time.sleep(1)
                conn.send(data.upper())
    
            except Exception as e:
                print(e)
                break
        
        conn.close()
    
    while True:
        conn, addr = server.accept()
        print(addr)
        # 这里实现并发
        t = Thread(target=working, args=(conn,))
        t.start()
    
    
    
    
    
  • 相关阅读:
    html中的浮动
    Html中元素的分类
    前端标签命名规范
    meta详解
    CSS的嵌套方法
    html标签
    W3C标准
    AE待整理
    AE小知识点备忘录
    Maximum Subarray
  • 原文地址:https://www.cnblogs.com/jinhongquan/p/11729090.html
Copyright © 2011-2022 走看看