thread.py @li:from threading import Thread import time def gui(): for i in range(10): print ('#',end='') time.sleep(1) def work(how_long): time.sleep(how_long) t1 = Thread(target=gui, name='Oberfläche', args=()) t1.start() t2 = Thread(target=work, name='Verarbeitung', args=(2,)) t2.start() t1.join() t2.join() @ü.li:Listing 2: thread_event.py @li:from threading import Thread, Event import time def gui(e): while not e.is_set(): e.wait(1) print ('#',end='') def work(how_long,e): time.sleep(how_long) e.set() e = Event() t1 = Thread(target=gui, name='Oberfläche', args=(e,)) t1.start() t2 = Thread(target=work, name='Verarbeitung', args=(2,e)) t2.start() t1.join() t2.join() @ü.li:Listing 3: lock.py @li:from threading import Lock import time value=1 def work(l): global value for i in range(5): l.acquire() #schaltet den Lock ein value+=1 print(threading.currentThread().getName(),value) l.release() #schalten den Lock frei time.sleep(3) l=Lock() #erzeugen t1 = threading.Thread(target=work, args=(l,)) t1.start() t2 = threading.Thread(target=work, args=(l,)) t2.start() t1.join() t2.join() @ü.li:Listing 4: process.py @li:from multiprocessing import Process import time import os def test_it(): print("test_it",os.getpid()) time.sleep(3) if __name__ == '__main__': print("main",os.getpid()) p = Process(target=test_it) p.start() time.sleep(1) p.terminate() print("test_it is alive", p.is_alive()) p.join() print(p.exitcode) @ü.li:Listing 5: pipe.py @li:from multiprocessing import Process, Pipe def fun(conn): conn.send([42, None, 'hello']) conn.close() if __name__ == '__main__': connection_1, connection_2 = Pipe() p = Process(target=fun, args=(connection_2,)) p.start() print(connection_1.recv()) p.join() @ü.li:Listing 6: manager.py @li:from multiprocessing import Process, Manager def fun(d, l): d[1] = 'eins' d[2] = 'zwei' l.reverse() if __name__ == '__main__': mgr = Manager() d = mgr.dict() l = mgr.list(['a','b','c','d']) p = Process(target=fun, args=(d, l)) p.start() p.join() print(d) print(l)