对于Python2而言,对于一个全局变量,你的函数里如果只使用到了它的值,而没有对其赋值(指a = XXX这种写法)的话,就不需要声明global。
相反,如果你对其赋了值的话,那么你就需要声明global。
声明global的话,就表示你手衫是在向一个全局变量赋值,而不是在向一个局部变量赋值。
若多个线程或进程同时 *** 作这一变量可能会导致抢占资源的现象,变量不能按照预定的逻辑进行 *** 作,这时,在改变变量前需要对变量加互斥锁, *** 作完成后释放互斥锁。
题外话:
GIL(Global Interpreter Lock) 全局解释器锁,导致任一时刻只能有一个线程使用解释器,当用于 IO 密集型任务时,IO 期间线程会释放解释器。
在 CPU 计算繁忙的任务重 不建议使用多线程,在启判非 CPU繁忙型任务中建议使用多线程。
顺便说下使用多进程的好处:完全并行,无 GIL 的限制,可充毕旁腔分利用多 CPU 多核的环境。
多线程使用互斥锁Demo :
除了雹乱尘函源禅数内部,python的变量本身作用域就是全局的。不同的模块互相导入时,将变量一同导陪缺入就行了,而函数内修改这些全局变量时需要先用global修饰变量名。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)