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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了『Python』 多线程 共享变量的实现相关的知识,希望对你有一定的参考价值。

参考技术A 简介:

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

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

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

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

题外话:

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

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

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

多线程使用互斥锁Demo :

以上是关于『Python』 多线程 共享变量的实现的主要内容,如果未能解决你的问题,请参考以下文章

40. Python 多线程共享变量 线程池

python之多线程变量共享

python中各模块变量共享的问题。

一起学Python: 多线程-共享全局变量问题

一起学Python:多线程-共享全局变量

Python 多进程和多线程 的使用