此代码在 Mac/Linux 中运行良好,但在 Windows 中运行不佳。
导入映射 导入操作系统 地图 = mmap.mmap(-1, 13) 地图.write(“你好世界!”) pid = os.fork() if pid == 0: # 在子进程中 打印“孩子” 地图.seek(0) 打印map.readline() 地图.close() 别的: 打印“父母”
这里的答案可能并不能回答问题。问题是由于fork()
. 从示例来看,您似乎想要在两个 Python 脚本之间共享数据。让我解释一下我的观点。
fork()
从Python 3.8开始, Windows平台上还没有真正的Unix实现。为了使上面的示例正常工作,子进程必须继承所有环境和打开的文件描述符。
我知道Windows现在支持Windows Linux子系统,但我上次检查它仍然没有完全实现fork。Cygwin 实际上可以,但速度有点慢。
到目前为止,我不知道如何在 Windows 平台中使用 mmap 在两个 Python 脚本之间传递信息。使用
multiprocessing.Queue
或者multiprocessing.Pipe
或者multiprocessing.Manager
或者 multiprocessing
的共享内存 (Value
和Array
) 来代替。我相信你可以让每个Python脚本将要映射的文件的内容读入Array
字符中。然后使用您自己的结构将共享内存映射为结构化数据,就像处理要映射的文件一样。
归档时间: |
|
查看次数: |
23574 次 |
最近记录: |