Python——开发注意事项

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

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

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

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

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)

 

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 @ 2022-03-14 17:04  新兵蛋Z  阅读(71)  评论(0)    收藏  举报