【问题标题】:What variables are shared and not between processes in python?哪些变量是共享的,而不是在 python 中的进程之间共享?
【发布时间】:2016-04-21 09:00:43
【问题描述】:
GLOBAL_VAR = 1
class Worker:
  class_var = 2

Worker 的实例由多个进程创建。他们会有自己的上述变量的副本吗?如果不是,我可以使用它们安全地锁定对多个类实例访问的资源的访问(当然,以线程安全的方式创建和访问它们)?我想为班级用户透明地做这件事。这样做的正确方法是什么?

【问题讨论】:

    标签: python multithreading multiprocessing


    【解决方案1】:

    您是在谈论多线程还是多处理?这些在 Python 中非常不同。

    线程可以像在 Python 中一样访问变量,不受限制。 另一方面,进程不能访问另一个进程的变量(除了共享变量的一些例外)。进程将在创建时复制局部变量的当前状态,但它只是一个副本。

    【讨论】:

    • 多处理。有没有办法在不注意父进程的情况下共享数据?
    • 你能清楚地揭示你想要达到的目标吗?进程之间有多种通信方式,但具体取决于应用程序
    • 有 N 个 Worker 实例,每个实例都在自己的进程中运行。父进程使用不向子工作者传递任何锁/引用的接口。我不想更改接口,因为还有其他与 Worker 不同的子工作者物种,共享相同的接口,不需要这些锁/数据。每个 Worker 最终都会访问 Resource("Name")。如果一个工人在“名称”上工作,其他尝试做同样事情的人可以跳过这个动作。因此,维护工作人员之间共享的工作名称列表就足够了(我想用一个互斥锁来更新列表)。
    猜你喜欢
    • 2012-04-09
    • 2016-12-14
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多