大家好,python2.7使用subprocess32代替subprocess以避免多线程相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于python2.7使用subprocess32代替subprocess以避免多线程和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
这样就可以直接调用run函数来运行命令了。当返回码为0时(Linux下认为命令执行正确),得到命令的标准输出。当返回码非0时(在Linux下,认为是命令执行错误)。 ),直接抛出异常。
在这里抛出异常,而不是直接返回其他特殊值,例如None。这样可以让脚本在出现问题时直接退出,而不是让错误继续传递下去。
Linux中有一些特殊的命令。一般情况下,返回码非0,所以可以用try和catch包装run函数。
使用subprocess32模块来替代subprocess模块
在python2.7中,如果仅在单个线程中使用子进程模板,您会发现一切正常。但是当你在多线程中使用subprocess模块时,在某些情况下,某些线程会直接阻塞进程。第一次遇到这个问题,我花了很长时间排查。最后Google了一下,发现是python 2.7中的subprocess模块的问题。这个问题在python3中已经得到解决。 Google 工程师将python3 中的代码向后移植到python2。 7、subprocess32项目创建完成。它的pypi链接是https://pypi.org/project/subprocess32/。项目描述中解释了subprocess中一些未解决的问题在fork和exec之间处理,使得整个模板在多线程下工作更加高效。稳定
您可以使用pip install subprocess32 安装它。
请注意,该软件包只能在Linux/Unix 中使用,不能在Windows 中使用。
使用起来比较简单,先尝试将subprocess32 作为subprocess 导入即可。如果失败,则直接导入subprocess。
其他选择
如果需要在python2.7中调用外部命令,可以尝试sh模块。该模块的用法与subprocess不同。
当使用shell=True添加subprocess时,相当于在bash中输入命令,使用起来比较简单。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/127217.html
用户评论
海盟山誓总是赊
这个技巧很实用,我也是在Python 2.7项目中遇到多线程问题,后来尝试用subprocess32替换subprocess才解决了!以前真的不知道存在这种方法,感谢分享!
有7位网友表示赞同!
话少情在
我还在纠结怎么解决Python 2.7的多线程问题,这个方案看起来很有希望。不过subprocess32和subprocess的使用有什么区别吗?
有10位网友表示赞同!
红玫瑰。
之前开发过程中也遇到过子进程挂起的现象很让人恼火!这种方法确实可以有效避免这个问题,太棒了!分享的经验真是一针见血,值得学习啊!
有20位网友表示赞同!
墨染殇雪
Python 2.7虽然版本比较老了,但是很多项目还是依赖它使用。这个方案确实是个很好的解决方案,让Python 2.7还能继续安全可靠地运行多线程程序。
有8位网友表示赞同!
烟花巷陌
我目前还在用Python3开发项目,这种问题在Python3中好像不会出现?不过感谢这位作者分享这么实用的技巧,以后遇到类似问题说不定也能派上用场!
有11位网友表示赞同!
拥菢过后只剰凄凉
subprocess32替换subprocess,这个方法听起来很特别。需要多了解一下两者的区别,然后再决定是否使用替代方案。
有14位网友表示赞同!
夏日倾情
Python 2.7虽然老了,可它毕竟是很多项目的基础,不能就轻易放弃啊!感谢作者分享这篇文章,为我们提供了一个解决难题的思路和方法。非常有帮助!
有20位网友表示赞同!
回到你身边
这个解决方案挺好的,但是对于不熟悉的读者来说,可能还是有点难理解。我希望作者可以提供一些更详细的代码示例和解释!
有7位网友表示赞同!
微信名字
我曾经尝试过使用subprocess处理多线程程序,结果导致系统卡死!感觉这个问题真的很复杂。感谢作者分享这个新的方法,希望能够避免类似的麻烦
有12位网友表示赞同!
等量代换
文章比较短小精悍,能将关键信息清晰传达出来,点赞!不过我觉得可以再添加一些关于subprocess32的使用场景和优缺点的分析,这样更有帮助!
有20位网友表示赞同!
涐们的幸福像流星丶
我非常喜欢这种简明扼要的解决方案!多线程编程确实是一个挑战,这个方法能够有效避免问题发生,太棒了!
有6位网友表示赞同!
゛指尖的阳光丶
还是Python 3好,多线程处理起来比较稳定。不过学习一下这种解决办法总是没坏处,以后说不定就能派上用场!
有18位网友表示赞同!
封锁感觉
对于我这种还在使用Python2.7的老司机来说,这个方法真是太重要了!感谢作者分享实用技巧,让我不再担心多线程问题困扰!
有8位网友表示赞同!
若他只爱我。
文章比较浅显,主要只是提到了解决方案,却没有详细的步骤和介绍。希望作者能够完善一下文章内容!
有20位网友表示赞同!
最怕挣扎
我最近也在学习Python的多线程编程,遇到了一些困难,这个方法给了我很大的启发,感觉可以尝试一下!
有18位网友表示赞同!
幸好是你
我对Python3更感兴趣,不过我还是想了解一下Python2.7这种修复方案具体如何实现?希望作者能详细解释下具体的代码步骤!
有20位网友表示赞同!