1

我有一个关于python锁和线程的问题,我意识到锁用于防止变量被另一个线程覆盖,使用锁来解决这个问题是否正常,因为这意味着你只能同时运行一个线程,它也意味着为每个可能被覆盖的变量创建获取/释放锁,这对我的项目来说会遇到很多!

人们是怎么做到的?,将变量包装在线程安全列表中,或者根据线程名称创建唯一变量?或者每个人都在使用锁定获取和释放乱扔代码?

4

1 回答 1

3

最好的想法是根本不使用线程。大多数 Python 实现都有一个全局解释器锁,它首先消除了使用线程的优势。如果您使用线程来等待 IO,如果您只使用异步 IO 代替,您可以获得相同或更好的性能。如果您使用线程跨处理器执行计算(数字运算),python 全局锁会阻止它工作,因此您最好使用多个进程。

与没有优势相比,python 中的线程有很多缺点和警告,就像你已经发现的那样。您仍然必须进行数据共享控制,并处理与在您无法控制的时刻接收 cpu 关注的线程相关的异常情况。所有这些都没有任何好处。

TL;DR 只是不要使用线程

于 2013-06-18T12:46:37.910 回答