首頁  >  文章  >  後端開發  >  如何使用非阻塞進程呼叫在 Python 中非同步運行從屬腳本?

如何使用非阻塞進程呼叫在 Python 中非同步運行從屬腳本?

DDD
DDD原創
2024-10-19 13:47:29634瀏覽

How to Run a Slave Script Asynchronously in Python using Non-Blocking Process Invocation?

非阻塞 subprocess.call

在這種情況下,您打算從父腳本 (main.py) 非同步呼叫從屬腳本 (slave.py) 。具體來說,您希望 Slave.py 在初始執行時從 main.py 接收參數後獨立於 main.py 運行。

要實現非阻塞行為,您應該使用 subprocess.Popen 而不是 subprocess.call 。主要差異在於 subprocess.call 會等待指令完成後再繼續,而 subprocess.Popen 則不會。

這是使用 subprocess.Popen 的範例:

import subprocess

# Pass the arguments from main.py to slave.py
arguments = ['python', 'slave.py'] + sys.argv[1:]

# Launch slave.py as a non-blocking process
process = subprocess.Popen(arguments)

現在,main .py 可以在slave.py 獨立運行時繼續執行。

附加說明:

  • 如果您',請不要使用列表來傳遞參數使用 shell=True。
  • 或者,您可以利用 asyncio 來實現基於協程的平行性。有關詳細信息,請參閱原​​始答案中提供的示例。

以上是如何使用非阻塞進程呼叫在 Python 中非同步運行從屬腳本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn