File: client.py

package info (click to toggle)
pyro5 5.16-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,124 kB
  • sloc: python: 14,328; makefile: 161; sh: 66; javascript: 62
file content (46 lines) | stat: -rw-r--r-- 1,509 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import time
from Pyro5.api import Proxy, config


config.SERIALIZER = "marshal"

uri = input("Uri of benchmark server? ").strip()
obj = Proxy(uri)
obj._pyroBind()
assert "oneway" in obj._pyroOneway   # make sure this method is indeed marked as @oneway


funcs = [
    lambda: obj.length('Irmen de Jong'),
    lambda: obj.timestwo(21),
    lambda: obj.bigreply(),
    lambda: obj.manyargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
    lambda: obj.noreply([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
    lambda: obj.noreply(None),
    lambda: obj.varargs('een', 2, (3,), [4]),
    lambda: obj.keywords(arg1='zork'),
    lambda: obj.echo('een', 2, (3,), [4]),
    lambda: obj.echo({"aap": 42, "noot": 99, "mies": 987654}),
    lambda: obj.bigarg('Argument' * 50),
    lambda: obj.oneway('stringetje', 432423434, 9.8765432)
]

print('-------- BENCHMARK REMOTE OBJECT ---------')
begin = time.time()
iters = 1000
print("warmup...")
for _ in range(iters):
    funcs[0]()
for i, f in enumerate(funcs, start=1):
    print("call #%d, %d times... " % (i, iters), end="")
    before = time.time()
    for _ in range(iters):
        f()
    print("%.3f" % (time.time() - before))
duration = time.time() - begin
print('total time %.3f seconds' % duration)
amount = len(funcs) * iters
print('total method calls: %d' % amount)
avg_pyro_msec = 1000.0 * duration / amount
print('avg. time per method call: %.3f msec (%d/sec) (serializer: %s)'
      % (avg_pyro_msec, amount / duration, config.SERIALIZER))