Python——开发注意事项

1. 如果是C/S架构,用户必须登录才可以进行后续操作的话,那么需要在server端进行限制,用户连接后就需要进行登录,如果不登录就不能后续操作。

2. 解耦,把卸载一起的大的功能分开成多个小功能处理,这样可读性,修改和复用更加便捷。

3. 加锁的重要性,进程共享,线程共享,单例模式,会因为CPU处理速度和切换导致数据不一致问题在操作全局变量和+=,-=,*=,/=计算再赋值类,或lis[0] +=1,dic['key']-=1 这类时,就会出现数据不一致的问题。

建议在一个项目中只是用一把锁,或者使用后立即release掉。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from threading import Thread,Lock
 
 
a = 1
 
def func1(lock):
        for i in range(100000):
            global a
            a -= 1
def func2(lock):
        for i in range(100000):
            global a
            a += 1
lock = Lock()
t1 = Thread(target=func1)
t2 = Thread(target=func2)
t1.start()
t2.start()
t1.join()
t2.join()
print(a)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from threading import Thread,Lock
 
a = 1
def func1(lock):
    with lock:
        for i in range(100000):
            global a
            a -= 1
def func2(lock):
    with lock:
        for i in range(100000):
            global a
            a += 1
lock = Lock()
t1 = Thread(target=func1,args=(lock,))
t2 = Thread(target=func2,args=(lock,))
t1.start()
t2.start()
t1.join()
t2.join()
print(a)        

  

posted @   新兵蛋Z  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-03-14 Zabbix——部署(DB与web一体)
2019-03-14 linux——网络配置
2019-03-14 CentOS7——vi编辑保存
2019-03-14 VMware ESXi-6.7——ISO安装
2019-03-14 VMware ESXi-6.7——安装
点击右上角即可分享
微信分享提示