全局变量在外部进程的循环上不更新

2024-04-30 06:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图通过创建一个空对象将数据放入另一个进程中的循环中。当我更改对象的内容时,进程似乎不会更新,并不断返回相同的值。你知道吗

以下是我尝试过的一些代码:

from multiprocessing import Process
from time import sleep


class Carrier():  # Empty object to exchange data
    pass


def test():
    global carry
    while True:
        print(carry.content)
        sleep(0.5)

carry = Carrier()
carry.content = "test"  # Giving the value I want to share

p = Process(target=test, args=())
p.start()
while True:
    carrier.content = input()  # Change the value from the object

我还尝试过每次从内存中删除对象并在下一个循环中重新定义它,但似乎没有任何效果,相反,它保留了初始的“test”值,即执行时出现的值。你知道吗


Tags: theto对象fromtestimporttrueobject
1条回答
网友
1楼 · 发布于 2024-04-30 06:21:35

我假设您在windows上运行这个程序,因为您在程序中打开的子进程或线程独立于它们的父进程。所以你不能像这样在进程之间共享数据。你知道吗

在linux上运行python时,可以在中共享数据,因为派生的进程是父进程的子进程,在父进程中可以共享数据。你知道吗

为了能够在父进程和子进程之间共享数据而不考虑底层操作系统,您可以看到以下链接-How to share data between Python processes?

相关问题 更多 >