如何實現一些邏輯,使我能夠在Windows上重現Linux上的功能,並使用Python調用fork()
系統調用?什麼是在Windows中複製fork()的最佳方式?
我特別試圖在SAPI Com組件上執行一個方法,同時在主線程中繼續執行其他邏輯而不會阻塞或等待。
如何實現一些邏輯,使我能夠在Windows上重現Linux上的功能,並使用Python調用fork()
系統調用?什麼是在Windows中複製fork()的最佳方式?
我特別試圖在SAPI Com組件上執行一個方法,同時在主線程中繼續執行其他邏輯而不會阻塞或等待。
可能是一個版本的spawn()for python? http://en.wikipedia.org/wiki/Spawn_(operating_system)
除了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 2.6/3.0(2008年10月和12月)開始,`processing`就是`multiprocessing`的標準庫的一部分。 – clacke 2016-09-13 13:01:14
來自Eli的線程示例將運行線程,但不會執行該線之後的任何工作。
我打算查看處理模塊和子流程模塊。我認爲我運行的com方法需要在另一個進程中,而不是在另一個線程中。
`multiprocessing`模塊是標準庫的一部分。 `subprocess`適合外部程序,``multiprocessing`適合python代碼。 – jfs 2008-10-04 17:21:19
fork()
已有實際上在Windows中重複,在Cygwin下,但它很毛茸茸。
Cygwin中的fork調用特別有趣,因爲它在Win32 API上映射不好。這使得正確實施非常困難。
查看The Cygwin User's Guide瞭解這個黑客攻擊的描述。
使用python multiprocessing module,它可以在任何地方工作。
這是一個IBM developerWords article,它演示瞭如何從os.fork()轉換到多處理模塊。
這就是`多處理`這些天在Windows上做的事情。 https://docs.python.org/3.5/library/multiprocessing.html?highlight=spawn#contexts-and-start-methods – clacke 2016-09-13 13:06:12