如何在Python中不依赖线程实现真正的并行Bash进程执行?

Patricia Arquette
发布: 2024-10-27 05:40:03
原创
161 人浏览过

How to Achieve True Parallel Bash Process Execution in Python Without Relying on Threads?

如何使用 Python 的线程和子进程模块生成并行 Bash 进程?

原始问题:

如何使用Python的线程和子进程模块来创建并行bash进程?当按照 Stack Overflow 响应中所述启动线程时,会发生连续执行而不是并行执行。

答案:

与最初的假设相反,线程对于并行 bash 子进程执行。以下技术提供了各种选项:

直接执行(无线程):

<code class="python">from subprocess import Popen

commands = ['date; ls -l; sleep 1; date', ...]
processes = [Popen(cmd, shell=True) for cmd in commands]</code>
登录后复制

使用带有 multiprocessing.dummy.Pool 的线程来限制并发命令:

<code class="python">from functools import partial
from multiprocessing.dummy import Pool
from subprocess import call

pool = Pool(2)
for i, returncode in enumerate(pool.imap(partial(call, shell=True), commands)):
    ...</code>
登录后复制

在没有进程池的情况下限制并发子进程:

<code class="python">from subprocess import Popen
from itertools import islice

max_workers = 2
processes = (Popen(cmd, shell=True) for cmd in commands)
running_processes = list(islice(processes, max_workers))
while running_processes:
    ...</code>
登录后复制

Unix 系统注意事项:

在 Unix 平台上,通过阻塞 os.waitpid(-1, 0) 来等待任何子进程退出来避免繁忙循环。

以上是如何在Python中不依赖线程实现真正的并行Bash进程执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!