Windows 上的 os.fork() 与 Python 的等价物是什么?
此代码在 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() 的等效函数是什么?
This code works well in Mac/Linux, but not in 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'
- What's the equivalent function of os.fork() on Windows?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里的答案可能并不能回答问题。该问题是由于
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
中。然后使用您自己的结构将共享内存映射为结构化数据,就像处理要映射的文件一样。The answer here may not answer the question. The problem is due to
fork()
. From the example, you seemed want to share data between two Python scripts. Let me explain my view.As of Python 3.8, there is no true Unix's
fork()
implementation in Windows platform. For the example above to work, a child process must inherit all environment and open file descriptors.I understand that Windows now support Windows Linux Subsystem, but the last i checked it still does not fully implement fork. Cygwin does actually but it is a bit slow.
I do not know how, until now, to pass information between two Python scripts using mmap in Windows platform. Use
multiprocessing.Queue
ormultiprocessing.Pipe
ormultiprocessing.Manager
ormultiprocessing
's shared memory (Value
andArray
) instead.I believe you could make each Python script to read in content of the to-be-mapped file into
Array
of characters. Then use your own structure to map the shared memory into a structured data as you do for the to-be-mapped file.根据您的用例以及是否可以使用 python 2.6,您也许可以使用 multiprocessing 模块。
Depending on your use case and whether you can use python 2.6 or not, you might be able to use the multiprocessing module.