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多线程全局变量和锁的主要内容,如果未能解决你的问题,请参考以下文章