作为一个探索新的强大的Python世界的人,我遇到了一个理解我的代码的问题,如果有人能在这方面帮助我,那将是非常好的。你知道吗
为了使我的问题简单化,我举了一个例子。 比方说,我有两个函数,通过多重处理同时运行。一个是永久的数据监听器,另一个打印出它的值。另外,我有一个拥有数据的对象,数据是通过set/get设置的。因此,面临的挑战是,这两个功能如何能够访问数据而不将其放到全局数据库中。我想我对如何在函数间传递对象缺乏理解。你知道吗
注意:这两个函数不需要同步,while只是用于无限循环。它只是如何把数据带过来。你知道吗
这会产生这样的代码(我知道它不起作用,只是为了得到这个想法):
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')
请照亮我
敬礼 阿德里安莫克
来自
multiprocessing
的通信信道Pipe or Queue正是为了解决这类问题而设计的这看起来是一个使用内存映射文件的好例子。你知道吗
当一个进程内存映射一个文件(比如F)而另一个进程出现并映射同一个文件(即也映射到F.fileno())时,则完全相同的内存块被映射到第二个进程的地址空间。这允许两个进程通过写入共享内存来极为快速地交换信息。你知道吗
当然,您必须管理映射中的正确访问(读、写等),然后只需正确轮询/写入文件中的正确位置,以满足应用程序的逻辑 (见http://docs.python.org/2/library/mmap.html)。你知道吗
相关问题 更多 >
编程相关推荐