Python多处理对象/函数来代替Bash&/GNU屏幕?

2024-09-30 08:16:28 发布

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

有没有方法可以编写一个python脚本来模拟gnuscreen和Bash的使用?我最初试图编写一个简单的Bash脚本,但我怀疑学习multiprocessing模块会给我带来一点灵活性,更不用说python模块都有很好的文档记录。在

因此,我在教程和文档中看到了并行运行单个函数的用法,但我对如何使用它有点迷茫。任何参考都会非常有帮助。在

以下是我想要的:

如果我在不同的python文件中进行了大量实验,那么在Bash中:

$python experiment1.py&
$python experiment2.py& ...

在Python中,如果我在同一个脚本中有一组函数,main将模拟上述函数(?这其实只是一个猜测,并不意味着用我的无知冒犯别人,而不是我自己):

^{pr2}$

我不确定我将如何测试这一点,除了我在OSX上的活动监视器,它似乎没有告诉我核心的分布,所以建议在没有运行时的情况下检查python会很有帮助。最后一个问题可能太笼统了,但我想我会把它扔掉。谢谢你的帮助!在


Tags: 模块文件方法函数文档py脚本bash
1条回答
网友
1楼 · 发布于 2024-09-30 08:16:28

下面的程序并行运行一组脚本。对于每个消息,它在开始和结束时都会打印一条消息。如果它因错误退出,则会打印错误代码和命令行,程序继续运行。在

它一次为系统中的每个CPU运行一个shell脚本。在

来源

import multiprocessing as mp, subprocess

def run_script(script_name):
    curproc = mp.current_process()
    cmd = ['python', script_name]
    print curproc, 'start:', cmd
    try:
        return subprocess.check_output(
            cmd, shell=False)
    except subprocess.CalledProcessError as err:
        print '{} error: {}'.format(
            curproc, dict(
                status=err.returncode,
                command=cmd,
            )
        )
    finally:
        print curproc, "done"

scripts = ['zhello.py', 'blam']

pool = mp.Pool()   # default: num of CPUs
print pool.map(
    run_script, scripts,
)
pool.close()
pool.join()

输出

^{pr2}$

相关问题 更多 >

    热门问题