Windows 上的 os.fork() 与 Python 的等价物是什么?

pro*_*eek 4 python fork

此代码在 Mac/Linux 中运行良好,但在 Windows 中运行不佳。

导入映射
导入操作系统

地图 = mmap.mmap(-1, 13)
地图.write(“你好世界!”)

pid = os.fork()

if pid == 0: # 在子进程中
    打印“孩子”
    地图.seek(0)
    打印map.readline()

    地图.close()
别的:
    打印“父母”
  • Windows 上 os.fork() 的等效函数是什么?

yoo*_*ghm 6

这里的答案可能并不能回答问题。问题是由于fork(). 从示例来看,您似乎想要在两个 Python 脚本之间共享数据。让我解释一下我的观点。

fork()从Python 3.8开始, Windows平台上还没有真正的Unix实现。为了使上面的示例正常工作,子进程必须继承所有环境和打开的文件描述符。

我知道Windows现在支持Windows Linux子系统,但我上次检查它仍然没有完全实现fork。Cygwin 实际上可以,但速度有点慢。

到目前为止,我不知道如何在 Windows 平台中使用 mmap 在两个 Python 脚本之间传递信息。使用

  1. multiprocessing.Queue或者
  2. multiprocessing.Pipe或者
  3. multiprocessing.Manager或者
  4. multiprocessing的共享内存 (ValueArray) 来代替。

我相信你可以让每个Python脚本将要映射的文件的内容读入Array字符中。然后使用您自己的结构将共享内存映射为结构化数据,就像处理要映射的文件一样。


Pau*_*cks 5

根据您的用例以及是否可以使用 python 2.6,您也许可以使用多处理模块。