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