Python 调用脚本而不等待它执行
Python calling script without waiting for it to execute
我想知道是否有任何方法可以调用 python 脚本并在不同的线程中完全启动该程序,这样主程序(调用者)就不必等到被调用的脚本完成执行。到目前为止,我已经尝试过 subprocess 和 os.system,但这两个都延迟到脚本执行完毕。
main.py
os.system('"F:\second.py"')
//continue the rest of the code without waiting for second.py to finish
second.py
//do stuff
你可以试试subprocess
first.py
import subprocess
subprocess.Popen(["python.exe", "second.py"])
print "done"
second.py
import time
for i in range(10):
print i
time.sleep(10)
编辑:
如果你想完全分开第一个和第二个脚本添加一个标志
first.py
import subprocess
subprocess.Popen(["python.exe", "second.py"], creationflags=subprocess.CREATE_NEW_CONSOLE)
print "done"
如果您使用的是 Unix 计算机,则可以使用 os.fork()
创建一个单独的进程,即使父进程已完成,该进程也会继续 运行。例如:
main.py
import os
pid = os.fork()
if pid == 0: # pid is only equal to 0 in the child process
os.system('python second.py')
second.py
import time
time.sleep(2)
print("I'm a child process!")
我想知道是否有任何方法可以调用 python 脚本并在不同的线程中完全启动该程序,这样主程序(调用者)就不必等到被调用的脚本完成执行。到目前为止,我已经尝试过 subprocess 和 os.system,但这两个都延迟到脚本执行完毕。
main.py
os.system('"F:\second.py"')
//continue the rest of the code without waiting for second.py to finish
second.py
//do stuff
你可以试试subprocess
first.py
import subprocess
subprocess.Popen(["python.exe", "second.py"])
print "done"
second.py
import time
for i in range(10):
print i
time.sleep(10)
编辑:
如果你想完全分开第一个和第二个脚本添加一个标志
first.py
import subprocess
subprocess.Popen(["python.exe", "second.py"], creationflags=subprocess.CREATE_NEW_CONSOLE)
print "done"
如果您使用的是 Unix 计算机,则可以使用 os.fork()
创建一个单独的进程,即使父进程已完成,该进程也会继续 运行。例如:
main.py
import os
pid = os.fork()
if pid == 0: # pid is only equal to 0 in the child process
os.system('python second.py')
second.py
import time
time.sleep(2)
print("I'm a child process!")