0

Twitter のようなサービスを作成しました。Python を使用してストレス テストを行いたいと考えています。「クライアント」と呼ばれるクライアントプログラムがあります。「クライアント」プログラムのいくつかのプロセスを開始し、いくつかのメッセージを送信し、数秒待って終了するスクリプトを書きたいと思います。

私が書いたのは

p = subprocess.Popen(['client','c1','localhost','4981'],stdin=subprocess.PIPE)

EOF を待っていますが、プロセスはまだ終わっていないので、今は communicate メソッドを呼び出すことができません。stdin.flush を呼び出しても機能しないようです。

これを行う方法に関するヒントはありますか?(Python でこれを行う必要はありません。bash スクリプトでこれを行う方法があれば、それも問題ありません)

4

2 に答える 2

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()
于 2013-03-03T00:15:43.643 に答える
0

bash ループを使用して、いくつかのクライアントを実行し、それらをバックグラウンドに置くことができます。通信する必要がある場合は、fgを使用してフォアグラウンドに配置し、 bgを使用して再びバックグラウンドに配置します。

于 2012-06-22T10:15:19.430 に答える