You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

svg_viewer.py 1.7 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #! /usr/bin/env python3
  2. import argparse
  3. import contextlib
  4. import getopt
  5. import http.server
  6. import os
  7. import runpy
  8. import sys
  9. import tempfile
  10. from megengine.logger import get_logger
  11. def main():
  12. parser = argparse.ArgumentParser(
  13. prog="megengine.tools.svg_viewer",
  14. description="View SVG Graph produced bt megengine profiler",
  15. )
  16. parser.add_argument("-p", "--port", type=int, default=8000, help="server port")
  17. parser.add_argument(
  18. "-a", "--address", type=str, default="localhost", help="server address"
  19. )
  20. args = parser.parse_args()
  21. address = args.address
  22. port = args.port
  23. src_filename = "svg_viewer.html"
  24. dst_filename = "index.html"
  25. src_path = os.path.join(os.path.dirname(__file__), src_filename)
  26. url = "http://{}:{}/{}".format("localhost", port, dst_filename)
  27. ssh_fwd_cmd = "ssh -L {}:localhost:{} <remote ip>".format(port, port)
  28. with tempfile.TemporaryDirectory() as serve_dir:
  29. dst_path = os.path.join(serve_dir, dst_filename)
  30. os.symlink(src_path, dst_path)
  31. os.chdir(serve_dir)
  32. get_logger().info("cd to serve directory: {}, starting".format(serve_dir))
  33. server = http.server.HTTPServer(
  34. (address, port), http.server.SimpleHTTPRequestHandler
  35. )
  36. get_logger().info(
  37. "server started, please visit '{}' to watch profiling result".format(url)
  38. )
  39. get_logger().info(
  40. "if you are in remote environment, use '{}' to forward port to local".format(
  41. ssh_fwd_cmd
  42. )
  43. )
  44. try:
  45. server.serve_forever()
  46. except KeyboardInterrupt:
  47. get_logger().info("server exiting")
  48. if __name__ == "__main__":
  49. main()