代码之家  ›  专栏  ›  技术社区  ›  Ram Rachum

python:“threading”和“multiprocessing”可交换的锁?

  •  7
  • Ram Rachum  · 技术社区  · 15 年前

    锁是从 threading 模块可与来自 multiprocessing 模块?

    3 回复  |  直到 15 年前
        1
  •  7
  •   jnoller    15 年前

    您通常可以交替使用这两种方法,但您需要认识到它们的区别。例如,multiprocessing.event由一个命名的信号量支持,该信号量对应用程序下的平台敏感。

    multiprocessing.lock由multiprocessing.semlock支持-因此它需要命名信号量。本质上,您可以互换使用它们,但是使用多处理的锁会在应用程序上引入一些平台需求(即,它不在BSD上运行)。

        2
  •  1
  •   Unknown    15 年前

    我不这么认为。线程锁位于同一进程内,而多进程锁可能位于共享内存中。

    上次我检查时,多处理不允许您共享队列中的锁,这是一个线程锁。

        3
  •  1
  •   rmmh CJ Cullen    15 年前

    是的,您可以像在单进程应用程序中一样使用来自多进程模块的锁,但是如果您使用的是多进程,则应该使用它的锁。