python并发执行远程命令线程不退出问题

本文探讨了使用multiprocessing Pool.map进行并发执行时遇到的线程不退出问题。问题出在远程命令执行函数(通过subprocess.Popen)的exit()操作,导致线程无法释放,主进程因此被阻塞。解决方案是通过捕获异常并用return替换exit,以优雅地结束线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过multiprocessing 模块的Pool.map实现并发,创建多个工作线程,工作线程调用登录远端执行命令的函数(通过subprocess.Popen实现),但是当代码逻辑执行完成后,线程不释放,主进程就一直等待不退出

代码demo

# 远端执行命令的函数
def remote_shell_opt(ip, cmd):
    # Ports are handled in ~/.ssh/config since we use OpenSSH
    ssh = subprocess.Popen(["/bin/ssh", "%s" % ip, cmd],
    #ssh = subprocess.Popen(["ssh", "%s" % ip, cmd],
                           shell=False,
                           stdout=subprocess.PIPE,
                           stderr=subprocess.<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值