• 线程进程


    threading

    import threading
    import time
    lock = threading.RLock()
    def process(arg):
    lock.acquire()
    print(arg)
    time.sleep(5)
    print("ok")
    lock.release()
    # for i in range(0,10):
    # process(i)
    for i in range(0,10):
    t = threading.Thread(target=process,args=(i,))
    t.setDaemon(True)#设置主线程是否等待子线程执行完成,默认等
    t.start()
    t.join(2)#等待线程执行完成,最大等2s,setdaemon后叠加成20s









    event

    import threading
    def do(event):
    print("1")
    event.wait()
    print("2")
    event_obj = threading.Event()
    for i in range(1,5):
    t = threading.Thread(target=do,args=(event_obj,))
    t.start()
    #阻塞线程
    input("")
    event_obj.set()#









    lock

    import threading
    import time
    number = 0
    lock = threading.RLock()

    def func():
    global number
    lock.acquire()#获得锁
    number += 1
    time.sleep(0.5)
    # print(i)
    print(number)
    # i+=1
    lock.release()#释放锁

    for i in range(0,10):
    t = threading.Thread(target=func)#,args=(i)
    t.start()
    # 函数里面加中括号就表示是可选的([])



    multiprocessing

    import multiprocessing
    def f(name):
    print(name)
    if __name__ == '__main__':
    m = multiprocessing.Process(target=f,args=("tom",))
    m.start()





    总结

    #进程
    # 优点:同时利用多个CPU,能够同时进行多个操作
    # 缺点:耗费资源(重新开辟内存空间)
    #线程
    # 优点:共享内存,IO操作时,创造并发操作
    # 缺点:抢占资源
    #进程不是越多越好,cpu个数=进程个数
    #线程也不是越多越好,具体案例具体分析,请求上下文切换耗时

    #GIL 》全局解释器锁
    #计算机中执行任务的最小单元:线程
    #IO操作不利用CPU
    #IO密集型(不用CPU):多线程
    #计算密集型(用CPU):多进程
    # 进程和线程的目的:提高执行效率
    # 1.单进程单线程




  • 相关阅读:
    关于sql json数据的处理
    时间函数strtotime的强大
    /usr/bin/install: cannot create regular file `/usr/local/jpeg6/include/jconfig.h'
    linux安装php7.2.7
    关于sql时间方面的处理
    关于centos防火墙的一些问题
    linux 安装ssl 失败原因
    linux安装php7.2.7
    拾取坐标和反查询接口api
    【转】通过点击获取地址等信息、可以传值
  • 原文地址:https://www.cnblogs.com/currynashinians000/p/8724359.html
Copyright © 2020-2023  润新知