进程正在改变他们不应该改变的东西。
AWorker有一个状态变量 (an mp.Value)。此值设置为-1,并且它 (the Worker)1在循环中将其更改为。
然而,这似乎是可以重置该值回至-1由产卵第二Worker,即使这股没有与原来的对。这似乎应该是不可能的。
行为:
当第二个工作器Worker启动时,第一个工作器 ( self.state.value)的状态被重置为-1。这被捕获,我们打印出发现错误。
代码:
import multiprocessing as mp
import time
class Worker:
def __init__(self, tag, service_state) -> None:
self.tag = tag
self.local_state = int(service_state.value)
self.state = service_state
self.run_work_loop()
def run_work_loop(self) -> None:
print(f"[{self.tag}] Running... {self.state.value} {self.local_state}")
while True:
if self.state.value != self.local_state:
print(f"[{self.tag}] Illegal change. Shared state: {self.state.value} Local State: {self.local_state}")
break
elif …Run Code Online (Sandbox Code Playgroud)