【发布时间】:2019-11-08 15:20:45
【问题描述】:
如何使它成为非阻塞调用? osd_cat 仅接受作为 PIPE 的输入,这需要 p.communicate() 调用来阻止进程。有没有其他方法可以在Popen中设置stdin?
p = subprocess.Popen(('osd_cat',
'-d',
'{}'.format(interval)),
stdin=subprocess.PIPE)
p.communicate(message)
【问题讨论】:
-
使用 Python 多处理并将您的子任务放在另一个进程中。使用消息队列与它交谈。
-
Waitaminute,你被困在的是如何喂给
stdin?在提问之前您是否尝试过p.stdin.write()? (是的,您需要在单独的线程中执行此操作以防止在主进程中阻塞,但这是线程的优点之一)。
标签: python linux subprocess blocking