Exemplo n.º 1
0
def remote_thread_init(bar,finished,server,data_pack):
    try:
        remote = remote_exec.remote_exec(server[0],server[1],0,1)
        results = remote.run(data_pack)
        #assign the results from the returned data to the local individuals
        inputs = data_pack[0]
        old = inputs['sub_pop']
        new = results['sub_pop']
        for i in range(len(old)):
            old[i].__dict__.update(new[i].__dict__)
    except IndexError:
        print 'error in %s,%d' %  server
    bar.enter()
    finished.post()
Exemplo n.º 2
0
def remote_thread_eval(bar,finished,server,data_pack):
    #import tree
    try:
        #print '5',tree.ref()
        remote = remote_exec.remote_exec(server[0],server[1],0,1)
        results = remote.run(data_pack)
        #print '6',tree.ref()
        #assign the results from the returned data to the local individuals
        inputs = data_pack[0]
        old = inputs['sub_pop']
        new = results['sub_pop']
        for gnm in new:
            gnm.root.delete_circulars()
            del gnm.root
        #print '6.25',tree.ref()
        for i in range(len(old)):
            old[i].__dict__.update(new[i].__dict__)

        #print '6.5',tree.ref()
    except IndexError:
        print 'error in %s,%d' %  server
    """
    import sys
    #r = new[0].root
    #print 'ref count',sys.getrefcount(r)
    #print '6.75',tree.ref()
    #Huh??? Why do I need to delete the new genomes
    #individually here?  Why aren't they garbage collected?
    indices = range(len(new))
    indices.reverse()
    for i in indices:
            del new[i]
    #print 'ref count',sys.getrefcount(r)
    #print '6.8',tree.ref()
    #r.delete_circulars()
    #print 'ref count',sys.getrefcount(r)
    #print '6.9',tree.ref()
    #del r
    #print '6.95',tree.ref()
    """
    bar.enter()
    finished.post()