『Python』 多线程 共享变量的实现

『Python』 多线程 共享变量的实现,第1张

简介:

对于Python2而言,对于一个全局变量,你的函数里如果只使用到了它的值,而没有对其赋值(指a = XXX这种写法)的话,就不需要声明global。

相反,如果你对其赋了值的话,那么你就需要声明global。

声明global的话,就表示你手衫是在向一个全局变量赋值,而不是在向一个局部变量赋值。

若多个线程或进程同时 *** 作这一变量可能会导致抢占资源的现象,变量不能按照预定的逻辑进行 *** 作,这时,在改变变量前需要对变量加互斥锁, *** 作完成后释放互斥锁。

题外话:

GIL(Global Interpreter Lock) 全局解释器锁,导致任一时刻只能有一个线程使用解释器,当用于 IO 密集型任务时,IO 期间线程会释放解释器。

在 CPU 计算繁忙的任务重 不建议使用多线程,在启判非 CPU繁忙型任务中建议使用多线程。

顺便说下使用多进程的好处:完全并行,无 GIL 的限制,可充毕旁腔分利用多 CPU 多核的环境。

多线程使用互斥锁Demo :

除了雹乱尘函源禅数内部,python的变量本身作用域就是全局的。

不同的模块互相导入时,将变量一同导陪缺入就行了,而函数内修改这些全局变量时需要先用global修饰变量名。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8278846.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存