Exemple #1
0
def client(ip, port):

    # Creo una socket e provo a connettermi al server all'indirizzo IP
    # e porta PORT.
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        sock.connect((ip, port))
    except Exception as e:
        print("Client: server closed ... leaving")
        sys.exit(0)

    try:
        # Leggo la lista di numeri da fattorizzare, serializzata da
        # PACK e la de-serializzo con UNPACK.
        data = sock.recv(1024)
        if not data:
            return
        data = unpack(data)
        print("Client %s\ngot range: %d-%d" % (os.getpid(), data[0], data[-1]))

        # Calcolo i fattori, li metto nel dizionario come valori dei
        # numeri, serializzo tutto, lo mando al server e poi saluto e
        # vado.
        d = dict()
        for n in data:
            ff = factorize_naive(n)
            d.update({n: ff})  # dict via comprehension!
        sock.send(pack(d))  # deserializzo
    finally:
        sock.close()
Exemple #2
0
def client(ip, port):

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        sock.connect((ip, port))
    except Exception as e:
        print("Client: server closed ... leaving")
        sys.exit(0)

    try:
        # Leggo la lista di numeri da fattorizzare, rappresentata come
        # stringa da "repr".
        data = sock.recv(1024)
        if not data:
            return
        # Passo dalla stringa all'oggetto (undo di repr)
        data = eval(data)
        print("Client %s\ngot range: %d-%d" % (os.getpid(), data[0], data[-1]))

        # Calcolo i fattori, li metto nel dizionario come valori dei
        # numeri, poi mando il repr del dizionario al server e poi
        # saluto e vado.
        d = dict()
        for n in data:
            ff = factorize_naive(n)
            d.update({n: ff})
        sock.send(repr(d))
    finally:
        sock.close()
Exemple #3
0
def worker(nums, outdict):
    """ The worker function, invoked in a thread. 'nums' is a
        list of numbers to factor. The results are placed in
        outdict.
    """
    for n in nums:
        outdict[n] = factorize_naive(n)
Exemple #4
0
def factorizer_worker(job_q, res_q):
    while not job_q.empty():
        try:
            job = job_q.get()
            out_dict = {n: factorize_naive(n) for n in job}
            res_q.put(out_dict)
        except Queue.Empty:
            return
Exemple #5
0
def factorizer_worker(job_q, result_q):
    myname = multiprocessing.current_process().name
    while True:
        try:
            job = job_q.get_nowait()
            #print '%s got %s nums...' % (myname, len(job))
            outdict = {n: factorize_naive(n) for n in job}
            result_q.put(outdict)
            #print '  %s done' % myname
        except Queue.Empty:
            return
Exemple #6
0
def factorizer_worker(job_q, res_q):
    # Prendo da JOB_Q i numeri  da fattorizzare, ne calcolo i fattori
    # con factorize_naive ed inserisco il risultato (un dizionario)
    # nella coda RES_Q. Questa è una semplice funzione che non ha
    # nulla a che vedere con multi processi.
    while True:
        try:
            job = job_q.get_nowait()
            out_dict = {n: factorize_naive(n) for n in job}
            res_q.put(out_dict)
        except Queue.Empty:
            return
Exemple #7
0
def client(ip, port):

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((ip, port))

    try:
        data = sock.recv(1024)
        if not data:
            return
        data = eval(data)
        print("Client %s\ngot: '%s'" % (os.getpid(), data))
        d = dict()
        for n in data:
            ff = factorize_naive(n)
            # print (ff)
            d.update({n: ff})
        sock.send(repr(d))
    finally:
        sock.close()
Exemple #8
0
def server(port, max_queue=5):

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(("", port))
    sock.listen(max_queue)

    while 1:
        conn, addr = sock.accept()
        try:
            print("Got connection from %s" % str(addr))
            while 1:
                data = conn.recv(1024).strip()
                print("Server got: '%s'" % data)
                if not data:
                    break
                if data == "quit":
                    conn.close()
                    return
                data = factorize_naive(int(data))
                conn.send(repr(data))
        finally:
            conn.close()
            return
Exemple #9
0
def serial_factorizer(nums):
    return {n: factorize_naive(n) for n in nums}