加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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.

祝好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读