哪些变量是共享的,而不是在 python 中的进程之间共享?
Posted
技术标签:
【中文标题】哪些变量是共享的,而不是在 python 中的进程之间共享?【英文标题】:What variables are shared and not between processes in python? 【发布时间】:2016-04-21 09:00:43 【问题描述】:GLOBAL_VAR = 1
class Worker:
class_var = 2
Worker 的实例由多个进程创建。他们会有自己的上述变量的副本吗?如果不是,我可以使用它们安全地锁定对多个类实例访问的资源的访问(当然,以线程安全的方式创建和访问它们)?我想为班级用户透明地做这件事。这样做的正确方法是什么?
【问题讨论】:
【参考方案1】:您是在谈论多线程还是多处理?这些在 Python 中非常不同。
线程可以像在 Python 中一样访问变量,不受限制。 另一方面,进程不能访问另一个进程的变量(除了共享变量的一些例外)。进程将在创建时复制局部变量的当前状态,但它只是一个副本。
【讨论】:
多处理。有没有办法在不注意父进程的情况下共享数据? 你能清楚地揭示你想要达到的目标吗?进程之间有多种通信方式,但具体取决于应用程序 有 N 个 Worker 实例,每个实例都在自己的进程中运行。父进程使用不向子工作者传递任何锁/引用的接口。我不想更改接口,因为还有其他与 Worker 不同的子工作者物种,共享相同的接口,不需要这些锁/数据。每个 Worker 最终都会访问 Resource("Name")。如果一个工人在“名称”上工作,其他尝试做同样事情的人可以跳过这个动作。因此,维护工作人员之间共享的工作名称列表就足够了(我想用一个互斥锁来更新列表)。以上是关于哪些变量是共享的,而不是在 python 中的进程之间共享?的主要内容,如果未能解决你的问题,请参考以下文章