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()
    
    
    
    
    
  • 相关阅读:
    求一个整数的划分
    HDU 1028 Ignatius and the Princess III
    HDU1215
    博弈论(2)
    阶乘的位数
    母函数详解
    SpragueGrundy FunctionSG函数博弈论(3)
    图的基本操作邻接表类型
    HDU 1536 SG函数应用
    顺序栈的实现
  • 原文地址:https://www.cnblogs.com/jinhongquan/p/11729090.html
Copyright © 2011-2022 走看看