我写了一个类似Twitter的服务,我想用python做一些压力测试。 我有一个客户端程序,称为“客户端”。 我想写一个脚本,它将启动“客户端”程序的几个进程,发送一些消息,等待几秒钟然后退出。
我写的是
p = subprocess.Popen(['client','c1','localhost','4981'],stdin=subprocess.PIPE)
现在我无法调用通信方法,因为它等待EOF,但进程还没有结束。 调用stdin.flush似乎也不起作用。
有关如何执行此操作的任何提示? (我不必在python中执行此操作,如果使用bash脚本执行此操作也可以这样做)
答案 0 :(得分:0)
您可以使用bash循环来运行某些客户端并将它们放入后台。如果您需要与其中一个进行通信,只需使用 fg 将其置于前台,然后使用 bg 再次将其置于后台
答案 1 :(得分:0)
致电p.stdin.close()
表示没有更多消息:
#!/usr/bin/python
import time
from subprocess import Popen, PIPE
# start several processes of the the "client" program
processes = [Popen(['client','c1','localhost','4981'], stdin=PIPE)
for _ in range(5)]
# send a few messages
for p in processes:
print >>p.stdin, message
p.stdin.close()
# wait a few seconds (remove finished processes while we wait)
for _ in range(3):
for p in processes[:]:
if p.poll() is not None:
processes.remove(p)
time.sleep(1)
# and will exit (kill unfinished subprocesses)
for p in processes:
if p.poll() is None:
p.kill()
p.wait()