23

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

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

4

7 回答 7

18

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

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

于 2011-05-16T16:51:18.377 回答
10

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

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

有关此 hack 的说明,请参阅The Cygwin 用户指南

于 2008-10-04T14:10:36.223 回答
3

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

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

于 2008-08-22T20:38:18.147 回答
3

除了 Greg 指出的 os 模块中的进程管理代码,还应该看看 threading 模块: 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_computations, args=[57, 83]).start()

    print "I'm continuing while that other function runs in another thread!"
于 2008-08-22T21:16:07.807 回答
3

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

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

于 2008-09-09T15:37:18.423 回答
2

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

于 2008-08-24T15:38:21.143 回答
0

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

于 2008-08-22T20:34:00.747 回答