2020-04-05

学习笔记之四十四(四)

‘’’
多线程中全局变量是 共享数据的:即多个线程共用相同的 global num

n+=1 中: n+1 是一个过程
n+1的值赋值给n有事一个过程
而不同的线程之间是并发的,而且对用cpu的使用是轮流且随机的(Python中),
所以有可能t1 操作处理的n+1还未来得及赋值给n,就被另一个t给抢占了cpu使用权,获取了n又进行了n+1操作,这样一来N加了两次1 , 但结果只有n+1…后续过程中如此情况多次发生,导致了 数据混乱
像上述数据混乱常发生玉大数据,即较大数字运算过程中常发生, 为了解决这一问题,Python底层给共享数据加锁 GIL (即多线程共享数据 特性时加锁,解决多个线程竞争资源问题) 但是如此会导致 运行速度缓慢
GIL global interperter lock 解释器全局锁
线程:常用于 IO 文件的读取和写入 爬虫等下载 , 费时间的任务
进程多用于:计算密集型 任务(大量的计算) 如圆周率的计算

拓展:                     

IO密集型任务:涉及到网络,磁盘IO 的任务 这类任务对cpu的消耗很少,大部分时间都在等待IO操作完成)

发布了57 篇原创文章 · 获赞 2 · 访问量 615

猜你喜欢

转载自blog.csdn.net/weixin_46400833/article/details/105335082