代码之家  ›  专栏  ›  技术社区  ›  Elinoter99

Python调用脚本而不等待其执行

  •  2
  • Elinoter99  · 技术社区  · 7 年前

    我想知道是否有任何方法可以调用python脚本,并在另一个线程中完全启动该程序,这样主程序(调用者)就不必等到调用的脚本完成执行。到目前为止,我已经尝试了子流程和操作系统。但这两个都会延迟,直到脚本完成执行。

    主要的py公司

    os.system('"F:\second.py"')
    //continue the rest of the code without waiting for second.py to finish
    

    第二py公司

    //do stuff
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Thomas    7 年前

    你可以试试 subprocess

    第一py公司

    import subprocess
    subprocess.Popen(["python.exe", "second.py"])
    print "done"
    

    第二py公司

    import time
    for i in range(10):
        print i
        time.sleep(10)
    

    编辑:

    如果要完全分离第一个脚本和第二个脚本,请添加一个标志

    第一py公司

    import subprocess
    subprocess.Popen(["python.exe", "second.py"], creationflags=subprocess.CREATE_NEW_CONSOLE)
    print "done"
    
        2
  •  0
  •   orn688    7 年前

    如果您在Unix计算机上,可以使用 os.fork() 创建一个单独的进程,即使父进程已完成,该进程仍将继续运行。例如:

    主要的py公司

    import os
    
    pid = os.fork()
    if pid == 0: # pid is only equal to 0 in the child process
        os.system('python second.py')
    

    第二py公司

    import time
    
    time.sleep(2)
    print("I'm a child process!")