python多线程全局变量和锁

Posted

tags:

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

参考技术A 1.python中数据类型,int,float,复数,字符,元组,做全局变量时需要在函数里面用global申明变量,才能对变量进行操作。

而,对象,列表,词典,不需要声明,直接就是全局的。

2.线程锁mutex=threading.Lock()

创建后就是全局的。线程调用函数可以直接在函数中使用。

mutex.acquire()开启锁

mutex=release()关闭锁

要注意,死锁的情况发生。

注意运行效率的变化:

正常1秒,完成56997921

加锁之后,1秒只运行了531187,相差10倍多。

3.继承.threading.Thread的类,无法调用__init__函数,无法在创建对象时初始化新建的属性。

4.线程在cpu的执行,有随机性

5. 新建线程时,需要传参数时,args是一个元组,如果只有一个参数,一定后面要加一个,符号。不能只有一个参数否则线程会报创建参数错误。threading.Thread(target=fuc,args=(arg,))

以上是关于python多线程全局变量和锁的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Python 多进程和多线程 的使用

多线程Python进程,队列和锁相关的一些问题

python多线程详解

Python进阶:利用线程实现多任务