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

时间:2010-04-29 15:59:51

标签: python fork

此代码适用于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'
  • Windows上os.fork()的等效功能是什么?

2 个答案:

答案 0 :(得分:2)

根据您的使用情况以及您是否可以使用python 2.6,您可以使用multiprocessing模块。

答案 1 :(得分:0)

此处的答案可能无法回答问题。问题是由于fork()造成的。从示例中,您似乎想在两个Python脚本之间共享数据。让我解释一下我的观点。

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

我了解Windows现在支持Windows Linux子系统,但是我最后一次检查它仍然不能完全实现fork。 Cygwin确实可以,但是有点慢。

直到现在,我都不知道如何在Windows平台上使用mmap在两个Python脚本之间传递信息。使用

  1. multiprocessing.Queue
  2. multiprocessing.Pipe
  3. multiprocessing.Manager
  4. multiprocessing的共享内存(ValueArray)。

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