【问题标题】:How to execfile an independent .py and continue on to next line of code in the original .py?如何执行独立的 .py 文件并继续执行原始 .py 中的下一行代码?
【发布时间】:2015-10-10 07:17:56
【问题描述】:

我有两个 python 文件:“old.py”和“new.py”。我想使用 execfile("new.py") 从 'old.py' 执行 'new.py'。但是,与其等待 'new.py' 完全完成其程序,然后再移动到 'old.py' 中的下一行,我希望两个脚本独立地继续(即,'old.py' 移动到之后的行execfile('new.py') 命令立即执行。

例如,如果 'new.py' 需要 48 秒才能完成整个程序,而 'old.py' 的内容为:

execfile("new.py")
print 2+2

我希望立即打印“4”,而不是 48 秒后。

你会如何建议这样做?

感谢您分享您的知识和专业知识。

【问题讨论】:

    标签: python python-2.7 execfile


    【解决方案1】:

    您想使用subprocess.Popen。它将在单独的进程中打开一个进程。

    # old.py - Make sure it's chmod +x
    #!/usr/bin/python
    import time
    
    time.sleep(48)
    

    # new.py 
    #!/usr/bin/python
    import subprocess
    
    subprocess.Popen(["./old.py"])
    print(2+2)
    

    >>> python new.py 
    4
    >>> ps
      PID TTY          TIME CMD
     2495 pts/17   00:00:00 bash
     2696 pts/17   00:00:00 old.py
     2697 pts/17   00:00:00 ps
    

    【讨论】:

    • 嗨,尤金,感谢您的回答。我试图避免使用 subprocess.Popen,因为在尝试执行另一个 .py 文件时,我永远无法弄清楚如何解决权限错误 [errno 13: Permission Denied]。还有其他方法可以做到这一点吗?
    • @Xander:执行文件可能因架构而异。您使用的是 Windows 还是类 Unix 系统?
    • 抱歉,我应该指定的。我使用的是 OSX 10.9,“old.py”和“new.py”位于用户主文件夹的同一目录中。
    • @Xander 从终端运行chmod +x old.py 设置可执行位。
    • @Xander 我明白了,我认为当时的问题是你的 hashbang 不正确。我使用了#!/usr/bin/python,但是您的python 二进制文件所在的位置可能不同。或者你可能没有把它放进去?
    猜你喜欢
    • 2019-03-19
    • 2018-02-20
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多