此代码适用于Mac / Linux,但不适用于Windows。
import mmap import os map = mmap.mmap(-1, 13) map.write("Hello world!") pid = os.fork() if pid == 0: # In a child process print 'child' map.seek(0) print map.readline() map.close() else: print 'parent'
答案 0 :(得分:2)
根据您的使用情况以及您是否可以使用python 2.6,您可以使用multiprocessing模块。
答案 1 :(得分:0)
此处的答案可能无法回答问题。问题是由于fork()
造成的。从示例中,您似乎想在两个Python脚本之间共享数据。让我解释一下我的观点。
从Python 3.8开始,Windows平台上没有真正的Unix fork()
实现。为了使上面的示例正常工作,子进程必须继承所有环境并打开文件描述符。
我了解Windows现在支持Windows Linux子系统,但是我最后一次检查它仍然不能完全实现fork。 Cygwin确实可以,但是有点慢。
直到现在,我都不知道如何在Windows平台上使用mmap在两个Python脚本之间传递信息。使用
multiprocessing.Queue
或multiprocessing.Pipe
或multiprocessing.Manager
或multiprocessing
的共享内存(Value
和Array
)。我相信您可以使每个Python脚本将待映射文件的内容读入Array
个字符中。然后,使用您自己的结构将共享内存映射到结构化数据中,就像处理要映射的文件一样。