我正在编写一个 Python 程序,它需要使用一个用作过滤器的外部 unix 程序来清理许多小字符串。目前,我为要清理的每个字符串创建一个新的子进程:
import subprocess
def cleanstring(s):
proc = subprocess.Popen(['/bin/filter','-n'],
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
out, err = proc.communicate(s)
assert not err
return out
显然,这种方法效率极低。什么是启动过滤器子进程并在需要时通过标准输入/标准输出与其通信的有效方法?
我一直在研究使用Python Queues来实现这一点,但它们可能对此有点过头了。该代码将从非线程 Web 服务器上的 Django 视图中调用,因此它只会是一个线程多次调用它。
谢谢!