Python – 多线程 – Lock必须是全局的吗?
发布时间:2020-12-20 13:09:57 所属栏目:Python 来源:网络整理
导读:我是 python中多线程的初学者. 我想在线程中使用Lock.是否必须在线程中声明为全局? 我的代码看起来像这样: i = 0lock = threading.RLock()def do_work(): global i # global lock ????????????? while i len(my_list): lock.acquire() my_i = i i += 1 loc
我是
python中多线程的初学者.
我想在线程中使用Lock.是否必须在线程中声明为全局? 我的代码看起来像这样: i = 0 lock = threading.RLock() def do_work(): global i # global lock ????????????? while i < len(my_list): lock.acquire() my_i = i i += 1 lock.release() my_list[my_i].some_works() workers = [threading.Thread(target=do_work) for _ in range(8)] for worker in workers: worker.start() 解决方法
要回答你的直接问题,线程不必使用全局来知道锁变量是什么.
Here is more information on scope in Python
不幸的是,“正确使用”的答案取决于您的应用/情况.只要您的锁实际上是应用程序的全局锁定,您所做的事情就没有任何内在错误.如果您的锁不是您的应用程序的全局锁,或者您想要破坏您的应用程序,您可以通过创建自己的线程对象来实现. Here is a great tutorial on using threads/locks. 祝好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |