zoukankan      html  css  js  c++  java
  • 并发并行与同步异步的概念;GIL锁的概念

    '''
    并发:是指系统具有处理多个任务(动作)的能力
    并行:是指系统具有同时处理多个任务(动作)的能力
    并行是并发的一个子集
    
    同步:当进程执行到一个IO(等待外部数据)的时候,需要等;这就叫同步;比如recv,accept
    异步:当进程执行到一个IO(等待外部数据)的时候,不需要等;一直等到数据接收成功,再回来处理;这就叫异步
    '''
    
    import threading
    import time
    
    # def music(one, two):
    #  print('begin to listen music %s %s' % (one, two))
    #  time.sleep(3)
    #  print('stop to listen musci and 子线程一ending...')
    #
    # def game():
    #  print('begin to play game')
    #  time.sleep(5)
    #  print('stop to play game and 子线程二ending...')
    #
    # if __name__ == '__main__':
    #  t1 = threading.Thread(target=music, args=(10, 20,))
    #  t2 = threading.Thread(target=game)
    #
    #  t1.start()
    #  t2.start()
    #
    #  print('主线程ending...')
    # 多线程---利用cpu的并发来实现多任务的处理,提高效率
    
    
    start = time.time()
    def sum():
       num = 0
       for i in range(1000001):
          num += i
       print('sum:', num)
    
    def mul():
       num = 1
       for i in range(1, 100000):
          num *= i
       print('mul:', num)
    
    l = []
    t1 = threading.Thread(target=sum)
    t2 = threading.Thread(target=mul)
    l.append(t1)
    l.append(t2)
    
    # for t in l:
    #  t.start()
    #
    # for i in l:
    #  i.join()
    
    sum()
    mul()
    
    print('运行时间为:%s' % (time.time() - start))
    # 在python3中开启线程执行比串行执行稍微快,这是因为做了优化;而在python2中开启线程执行比串行执行慢,这是因为本身两个线程之间就是不断的在进行切换让cpu执行;
    # python的GIL,意思就是说每一个进程都有一把GIL锁,也就是cpu只执行一个进程,然后进程间每个线程不断切换让cpu执行,大量的切换也需要消耗时间;
    # GIL:全局解释锁,因为有GIL,所以同一时刻,只有一个线程被CPU执行
    # 任务:IO密集型,计算密集型
    # 对于IO密集型的任务:python的多线程是有意义的,也可以采用多进程+协程
    # 对于计算密集型的任务:python的多线程就不推荐,python就不适用了

    
    
    while True: print('studying...')
  • 相关阅读:
    Python操作文件和目录
    ffmpeg命令简单使用
    【转载】一个简单的爬虫:爬取豆瓣的热门电影的信息
    【转载】正则表达式re.S的用法
    linux用户添加
    SQL语句update修改数据库字段
    linux命令之cp
    linux命令——tree命令
    Linux磁盘管理
    Python资源安装过程出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))…………
  • 原文地址:https://www.cnblogs.com/xuewei95/p/14846337.html
Copyright © 2011-2022 走看看