热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python:类似asyncio.create_subprocess_{shell,exec}的东西,但是运行的是函数而不是可执行文件?

这个问题与我最近在此提出的其他问题(

这个问题与我最近在此提出的其他问题(python: fork without an external command,and capturing stdout and stderr separately)类似,除了这个问题与asyncio世界有关。

asyncio.create_subprocess_{shell,exec}函数提供了一种方便的方式来在子进程中运行可执行文件,并通过启用异步的管道与其可执行文件stdinstdoutstderr进行交互。我正在寻找一个类似的过程,该过程将在子进程中运行任意功能,并为其stdinstdoutstderr提供相同的启用异步功能的管道。例如,假设此假设函数称为asyncio.create_subprocess_lambda。我希望它或多或少如下地工作:

def myfunc(*args,**kwargs):
# does arbitrary things with stdin,stdout,and stderr.
return 0
async def run():
proc = await asyncio.create_subprocess_lambda(
lambda : myfunc('a','b',c='d'),stdout=asyncio.subprocess.PIPE,stderr=asyncio.subprocess.PIPE)
stdout,stderr = await proc.communicate()
print(f'[lambda exited with {proc.returncode}]')
if stdout:
print(f'[stdout]\n{stdout.decode()}')
if stderr:
print(f'[stderr]\n{stderr.decode()}')

这将导致分叉发生,而myfunc函数作为子级运行,并且其stdoutstderr输出可通过异步管道在父级中访问。

我知道这种功能目前尚不存在,但是我希望可以使用其他asyncio方法,以使我能够以最少的复杂,复杂的代码来实现此功能。

预先感谢您的任何建议。





推荐阅读
author-avatar
双豆儿_668
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有