Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. import simplejson
  2. import requests
  3. import time
  4. import sys
  5. import myeveapi # messing with dumps
  6. from collections import namedtuple
  7. import datetime as dt
  8. from Queue import Queue
  9. from threading import Thread
  10. import re
  11.  
  12. eve = myeveapi.evedb()
  13. jump_entry = namedtuple("jump_entry", "start stop visited current jumps")
  14.  
  15. def jumps_list():
  16. jumpdata = []
  17. with open("mapSolarSystemJumps.sql") as f:
  18. for line in f:
  19. h = re.findall(r'\(([0-9]*,[0-9]*,[0-9]*,[0-9]*,[0-9]*,[0-9]*)',str(line),re.M|re.I)
  20. if(len(h)>0):
  21. for hh in h:
  22. jumpdata.append(hh.split(","))
  23. return map(lambda x: [int(x[2]),int(x[3])],jumpdata)
  24. map = jumps_list()
  25. def jumptest(node):
  26. global found
  27. curr = int(getattr(node, "current"))
  28. #print curr
  29. dest = int(getattr(node, "stop"))
  30. visited = getattr(node, "visited")
  31. #print "%s(%d) == %s(%d) [%d]" % (eve.getsystemname(curr),curr,eve.getsystemname(dest),dest,getattr(node, "jumps"))
  32. if((not curr in visited )):
  33. #print "asdf"
  34. matches = [x for x in map if x[0]==curr]
  35. visited.append(curr)
  36. print("%d;%d"%(curr,getattr(node, "jumps")))
  37. #sys.stdout.write("\r %d jumps so far "%getattr(node, "jumps"))
  38. for m in matches:
  39. #print "%s -> %s" % (eve.getsystemname(curr),eve.getsystemname(m[1]))
  40. node_queue.put(jump_entry(getattr(node, "start"),dest,visited,m[1],getattr(node, "jumps")+1))
  41. elif(curr in visited):
  42. return
  43. #else:
  44. #print "\n%s(%d)"% (eve.getsystemname(curr),curr)
  45. return 0
  46. def jump_task():
  47. while True:
  48. node = node_queue.get()
  49. jumptest(node)
  50. node_queue.task_done()
  51. def start_queue(fromsys,tosys,workers):
  52. global results
  53. results = []
  54. global found
  55. found = 0
  56. global node_queue
  57. node_queue = Queue(3000)
  58. for i in xrange(workers): #no of threads!
  59. t = Thread(target=jump_task)
  60. t.daemon = True
  61. t.start()
  62. start_time = time.time()
  63. node_queue.put(jump_entry(fromsys,tosys,[],fromsys,0))
  64. node_queue.join()
  65. print "%s -> %s = %d jumps" % (eve.getsystemname(fromsys),eve.getsystemname(tosys),min(results))
  66. print("%d workers --- %s seconds ---" % (workers,time.time() - start_time))
  67. del node_queue
  68. del found
  69. del results
  70. start_queue(eve.getsystemid("jita"),eve.getsystemid("nbw-gd"),1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement