Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import simplejson
- import requests
- import time
- import sys
- import myeveapi # messing with dumps
- from collections import namedtuple
- import datetime as dt
- from Queue import Queue
- from threading import Thread
- import re
- eve = myeveapi.evedb()
- jump_entry = namedtuple("jump_entry", "start stop visited current jumps")
- def jumps_list():
- jumpdata = []
- with open("mapSolarSystemJumps.sql") as f:
- for line in f:
- h = re.findall(r'\(([0-9]*,[0-9]*,[0-9]*,[0-9]*,[0-9]*,[0-9]*)',str(line),re.M|re.I)
- if(len(h)>0):
- for hh in h:
- jumpdata.append(hh.split(","))
- return map(lambda x: [int(x[2]),int(x[3])],jumpdata)
- map = jumps_list()
- def jumptest(node):
- global found
- curr = int(getattr(node, "current"))
- #print curr
- dest = int(getattr(node, "stop"))
- visited = getattr(node, "visited")
- #print "%s(%d) == %s(%d) [%d]" % (eve.getsystemname(curr),curr,eve.getsystemname(dest),dest,getattr(node, "jumps"))
- if((not curr in visited )):
- #print "asdf"
- matches = [x for x in map if x[0]==curr]
- visited.append(curr)
- print("%d;%d"%(curr,getattr(node, "jumps")))
- #sys.stdout.write("\r %d jumps so far "%getattr(node, "jumps"))
- for m in matches:
- #print "%s -> %s" % (eve.getsystemname(curr),eve.getsystemname(m[1]))
- node_queue.put(jump_entry(getattr(node, "start"),dest,visited,m[1],getattr(node, "jumps")+1))
- elif(curr in visited):
- return
- #else:
- #print "\n%s(%d)"% (eve.getsystemname(curr),curr)
- return 0
- def jump_task():
- while True:
- node = node_queue.get()
- jumptest(node)
- node_queue.task_done()
- def start_queue(fromsys,tosys,workers):
- global results
- results = []
- global found
- found = 0
- global node_queue
- node_queue = Queue(3000)
- for i in xrange(workers): #no of threads!
- t = Thread(target=jump_task)
- t.daemon = True
- t.start()
- start_time = time.time()
- node_queue.put(jump_entry(fromsys,tosys,[],fromsys,0))
- node_queue.join()
- print "%s -> %s = %d jumps" % (eve.getsystemname(fromsys),eve.getsystemname(tosys),min(results))
- print("%d workers --- %s seconds ---" % (workers,time.time() - start_time))
- del node_queue
- del found
- del results
- start_queue(eve.getsystemid("jita"),eve.getsystemid("nbw-gd"),1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement