首页 > 其他 > 详细

并发并行与同步异步的概念;GIL的概念

时间:2021-06-03 23:21:58      阅读:21      评论:0      收藏:0      [点我收藏+]
‘‘‘
并发:是指系统具有处理多个任务(动作)的能力
并行:是指系统具有同时处理多个任务(动作)的能力
并行是并发的一个子集

同步:当进程执行到一个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就不适用了

技术分享图片

并发并行与同步异步的概念;GIL的概念

原文:https://www.cnblogs.com/xuewei95/p/14846337.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!