コード例 #1
0
import lithops.multiprocessing as mp
from lithops.multiprocessing import Process, Queue
import time
import random


def work(remote_queue):
    for i in range(5):
        remote_queue.put('Working hard ... {}'.format(i))
        time.sleep(random.random())


if __name__ == '__main__':
    queue = Queue()
    process = Process(target=work, args=(queue, ))

    # ctx = mp.get_context('spawn')
    # queue = ctx.Queue()
    # process = ctx.Process(target=work, args=(queue,))

    process.start()
    process.join()

    while True:
        try:
            data = queue.get(timeout=3)
            print(data)
        except queue.Empty:
            print('Queue empty!')
            break
コード例 #2
0
from lithops.multiprocessing import Process, SimpleQueue


def f(q):
    q.put([42, None, 'hello World'])


if __name__ == '__main__':
    q = SimpleQueue()
    p = Process(target=f, args=(q, ))
    p.start()
    print(q.get())  # prints "[42, None, 'hello']"
    p.join()
コード例 #3
0
import getpass

from lithops.multiprocessing import Process
# from multiprocessing import Process


def function(name, language='english'):
    greeting = {
        'english': 'hello',
        'spanish': 'hola',
        'italian': 'ciao',
        'german': 'hallo',
        'french': 'salut',
        'emoji': '\U0001F44B'
    }

    print(greeting[language], name)


if __name__ == '__main__':
    name = getpass.getuser()
    p = Process(target=function, args=(name, ), kwargs={'language': 'english'})
    p.start()
    p.join()
コード例 #4
0
ファイル: c_types.py プロジェクト: zhanggbj/lithops

def add(index, value):
    a[index] += value


def to_upper():
    my_str.value.upper()


if __name__ == '__main__':
    x = [4, 8, 15, 16, 23, 42]
    a = Array('i', x)
    my_str = Array('c', b'hello')

    p = Process(target=replace, args=(0, 45))
    p.start()
    p.join()

    print(a[0])

    with Pool() as p:
        res = p.starmap_async(add, [(i, 1) for i in range(len(a))])
        p.close()
        res.wait()
        p.join()

    print(a[:])

    a[:] = [i for i in range(len(a))]
    print(a[2:4])
コード例 #5
0
from lithops.multiprocessing import Process, Pipe


def f(conn):
    conn.send([42, None, 'hello'])
    conn.close()


if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    print(parent_conn.recv())  # prints "[42, None, 'hello']"
    p.join()
コード例 #6
0
from lithops.multiprocessing import Process


def f(name):
    print('hello', name)


if __name__ == '__main__':
    p = Process(target=f, args=('bob', ))
    p.start()
    p.join()
コード例 #7
0
def worker(q):
    working = True
    while working:
        x = q.get()

        # Do work that may fail
        assert x < 10

        # Confirm task
        q.task_done()

        if x == -1:
            working = False


if __name__ == '__main__':
    q = JoinableQueue()
    p = Process(target=worker, args=(q, ))
    p.start()

    for x in range(10):
        q.put(x)

    # uncomment to hang on the q.join
    #q.put(11)
    q.join()

    q.put(-1)  # end loop
    p.join()
コード例 #8
0
ファイル: listener_socket.py プロジェクト: zhanggbj/lithops
ADDRESS = ('localhost', 50000)
CLIENTS = 5


def server(address):
    c = CLIENTS
    with Listener(address, authkey=b'secret password') as listener:
        while c > 0:
            print('waiting to receive a connection...')
            with listener.accept() as conn:
                print('connection accepted from', listener.last_accepted)
                c -= 1
                print(conn.recv())
                conn.send('good bye')


def client(address):
    with Client(address, authkey=b'secret password') as conn:
        conn.send('hello')
        print(conn.recv())


serv = Process(target=server, args=(ADDRESS, ))
serv.start()

with Pool() as p:
    p.map(client, [(ADDRESS, )] * 5)

serv.join()