Как упорядочить потоки threading

Я пишу сканер на открытые порты для проверки своего приложения,но ,к сожалению без потоков это займёт очень большое кол-во времени. Помогите пожалуйста упорядочить потоки.

1 поток - 1.url.com 
2 поток - 2.url.com 
3 потом - 3.url.com

====Первый поток завершает работу====

1 поток - 4.url.com
А то у меня получается,что первый поток переходит на 2.url.com

def go(n):
    try:
        nm = nmap.PortScanner()
                #scan_thread = Thread(nmap.PortScanner().scan(), args=(mas[j],'1-65000',))
                #scan_thread.start()
                #scan_thread.join(timeout=120)
        nm.scan(n)
        for host in nm.all_hosts():
            print('----------------------------------------------------')
            print('Host : %s (%s)' % (host, nm[host].hostname()))
            print('State : %s' % nm[host].state())
            for proto in nm[host].all_protocols():
                print('----------')
                print('Protocol : %s' % proto)
                lport = nm[host][proto].keys()
                for port in lport:
                    print ('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
    except Exception:
        print('',end='')

for j in range(len(mas)-1):
    scan_thread = Thread(target=go, args=(str(mas[j]),))
    scan_thread.start()
    scan_thread.join(timeout=300)

Где mas[j] - это url,
mas[0]=0.url.com
mas[1]=1.url.com

Ответы (0 шт):