我一直在尝试通过创建一个空对象将数据传递到另一个过程中的循环中。当我更改对象的内容时,进程不会似乎更新,并继续返回相同的值。
这是我尝试过的一些代码:
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
我还尝试过每次从内存中删除对象并在下一个循环中重新定义它,但似乎没有任何效果,相反,它保持初始"测试"值,而执行后的一个值。<<<<<。/p>
我假设您正在在Windows上运行此程序,因为您在程序中打开的子进程或线程独立于他们的父进程。因此,您实际上无法在这样的过程之间共享数据。
在Linux上运行Python时,可以共享数据,因为产卵过程是父母的孩子可以共享数据的孩子。
无论基础操作系统,您都能在父母和子过程之间共享数据,您可以看到此链接 - 如何在Python流程之间共享数据?