Python中两个同时运行的函数之间的数据交换

Python中两个同时运行的函数之间的数据交换,python,function,multiprocessing,Python,Function,Multiprocessing,作为一个探索Python新的强大世界的人,我在编码方面遇到了一个理解上的问题,如果有人能在这方面帮助我,那将是非常棒的 为了简化我的问题,我举了一个例子。 比方说,我有两个函数,通过多处理同时运行。一个是永久数据侦听器,另一个打印出它的值。此外,我有一个拥有数据的对象,通过set/get设置数据。因此,挑战在于这两个功能如何能够访问数据,而不将其提交给全局。我想我对如何在函数之间传递对象缺乏理解 注意:这两个函数不需要同步,而while只是用于无限循环。这就是如何把数据带过来 这会产生这样的代码

作为一个探索Python新的强大世界的人,我在编码方面遇到了一个理解上的问题,如果有人能在这方面帮助我,那将是非常棒的

为了简化我的问题,我举了一个例子。 比方说,我有两个函数,通过多处理同时运行。一个是永久数据侦听器,另一个打印出它的值。此外,我有一个拥有数据的对象,通过set/get设置数据。因此,挑战在于这两个功能如何能够访问数据,而不将其提交给全局。我想我对如何在函数之间传递对象缺乏理解

注意:这两个函数不需要同步,而while只是用于无限循环。这就是如何把数据带过来

这会产生这样的代码(我知道它不起作用,只是为了得到这个想法):

请启发我

问候
AdrianMonk

这看起来是一个使用内存映射文件的好例子

当一个进程内存映射一个文件(比如F)时,另一个进程出现并映射同一个文件(即也映射到F.fileno()),则完全相同的内存块被映射到第二个进程的地址空间。这使得这两个进程可以通过写入共享内存极为快速地交换信息

当然,您必须管理映射中的正确访问(读、写等),然后只需正确轮询/写入文件中的正确位置,以满足应用程序的逻辑
(请参阅)。

来自
多处理的通信通道设计用于解决此类问题

很酷,这听起来像是一种方法,它避免了将所有内容设置为全局。亚德里安酒店
import multiprocessing

#simply a data object
class data(object):
    def __init__(self):
    self.__value = 1

    def set_value(self, value):
        self.__value = value

    def get_value(self):
        return self.__value      

# Data listener
def f1(count):
    zae = 0
    while True:
        zae += 1       
        count.set_value = zae

def f2(count):
    while True:
        print (count.get_value)    

#MainPart
if __name__ == '__main__':
print('start')
count = data()

jobs = []
p1 = multiprocessing.Process(target =f1(count))
p2 = multiprocessing.Process(target =f2(count))
jobs.append(p1)
jobs.append(p2)

p1.start()   
p2.start() 

print ('end')