通过一个程序运行3个python程序子流程.Popen方法

2024-10-03 15:35:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过运行一个python程序同时运行3个python程序

我在一个单独的python程序中使用以下脚本样本.py你知道吗

你知道吗样本.py地址:

import subprocess
subprocess.Popen(['AppFlatRent.py'])
subprocess.Popen(['AppForSale.py'])
subprocess.Popen(['LandForSale.py'])

三个项目包括Python.py在同一文件夹中。你知道吗

Error:  OSError: [Errno 2] No such file or directory

有人能指导我如何使用子流程.Popen方法?你知道吗


Tags: 项目pyimport程序脚本文件夹地址error
3条回答

某些脚本中可能缺少shebang(#!..),或者未设置可执行权限(chmod +x)。你知道吗

您可以显式地提供Python可执行文件:

#!/usr/bin/env python
import inspect
import os
import sys
from subprocess import Popen

scripts = ['AppFlatRent.py', 'AppForSale.py', 'LandForSale.py']

def realpath(filename):
    dir = os.path.realpath(os.path.dirname(inspect.getsourcefile(realpath)))
    return os.path.join(dir, filename)

# start child processes
processes = [Popen([sys.executable or 'python', realpath(scriptname)])
             for scriptname in scripts]

# wait for processes to complete
for p in processes:
    p.wait() 

上面假设脚本名是相对于模块给出的。你知道吗

考虑导入模块并使用threadingmultiprocessing模块并行运行相应的函数,而不是直接将它们作为脚本运行。你知道吗

这是因为执行时脚本不在当前目录中样本.py. 如果三个脚本在同一目录中样本.py,您可以使用:

import os
import subprocess
DIR = os.path.dirname(os.path.realpath(__file__))

def run(script):
    url = os.path.join(DIR, script)
    subprocess.Popen([url])

map(run, ['AppFlatRent.py','AppForSale.py', 'LandForSale.py'])

但老实说,如果我是你,我会用bash脚本来完成。你知道吗

找不到文件,因为当前工作目录设置不正确。在Popen中使用参数cwd="/path/to/script"

相关问题 更多 >