我如何实现一些逻辑,允许我使用Python在Windows上使用fork()
系统调用在Linux上重现我的功能?
我特意尝试在SAPI Com组件上执行一个方法,同时继续主线程中的其他逻辑而不阻塞或等待。
答案 0 :(得分:17)
使用可在任何地方使用的python multiprocessing module。
这是一个IBM developerWords article,它显示了如何从os.fork()转换为多处理模块。
答案 1 :(得分:10)
fork()
实际上已经在Cygwin下的Windows中重复了,但它非常多毛。
Cygwin中的fork调用特别有趣,因为它不能很好地映射到Win32 API之上。这使得很难正确实施。
有关此黑客的说明,请参阅The Cygwin User's Guide。
答案 2 :(得分:3)
查看os module中的流程管理功能。有许多不同方式启动新进程的功能,包括同步和异步。
我还应该注意,Windows不提供与其他系统上的fork()完全相同的功能。要在Windows上执行多处理,您需要使用threading模块。
答案 3 :(得分:3)
除了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!"
答案 4 :(得分:3)
来自Eli的Threading示例将运行该线程,但不会在该行之后执行任何工作。
我将查看处理模块和子进程模块。我认为我正在运行的com方法需要在另一个进程中,而不仅仅是在另一个进程中。
答案 5 :(得分:2)
您可能还想使用处理模块(http://pypi.python.org/pypi/processing)。它具有很多功能,可以使用与线程模块相同的API编写并行系统......
答案 6 :(得分:0)
可能是python的spawn()版本? http://en.wikipedia.org/wiki/Spawn_(operating_system)