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
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()
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()
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])
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()
from lithops.multiprocessing import Process def f(name): print('hello', name) if __name__ == '__main__': p = Process(target=f, args=('bob', )) p.start() p.join()
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()
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()