在Windows中复制fork()的最佳方法是什么?

我如何实现一些逻辑,使我能够在Windows上使用Python在fork()系统调用时重现Linux上的function?

我特别试图在SAPI Com组件上执行一个方法,同时继续主线程中的其他逻辑而不会阻塞或等待。

Solutions Collecting From Web of "在Windows中复制fork()的最佳方法是什么?"

使用python 多处理模块 ,可以在任何地方工作。

这是一篇IBM developerWords文章 ,展示了如何从os.fork()转换到多处理模块。

fork()实际上已经在Cygwin下的Windows中重复了,但是它非常多毛。

Cygwin中的fork调用特别有趣,因为它在Win32 API之上映射不佳。 这使得正确实施非常困难。

请参阅“Cygwin用户指南”了解这个黑客攻击的描述。

看看os模块中的进程管理功能。 有许多不同方式启动新进程的功能,包括同步和异步启动。

我还应该注意到,Windows不提供与其他系统上的fork()完全相同的功能。 要在Windows上执行多处理,您将需要使用线程模块。

来自Eli的Threading示例将运行该线程,但不会执行该行之后的任何工作。

我将看看处理模块和子流程模块。 我认为我正在运行的com方法需要在另一个进程,而不是在另一个线程。

除了Greg指出的os模块中的进程管理代码之外,还应该看一下线程模块: https : //docs.python.org/library/threading.html

 from threading import Thread def separate_computations(x, y): print sum(x for i in range(y)) # really expensive multiplication Thread(target=separate_compuations, args=[57, 83]).start() print "I'm continuing while that other function runs in another thread!" 

您可能还喜欢使用处理模块( http://pypi.python.org/pypi/processing )。 它具有与线程模块相同的API编写并行系统的功能。

可能是python的spawn()版本? http://en.wikipedia.org/wiki/Spawn_(operating_system)