ich bin derzeit dabei eine Art plugin System in Python zu schreiben. Dafür wollte ich unter anderem Threads benutzen. Derzeit bin ich so weit, dass ich die Threads durch selbstgebaute Events starten kann. Das passt schon einmal. Ich habe nur das Problem, das ich gerne noch eine Information hätte, an welcher Stelle das event aufgetreten ist. Oder anders ausgedrückt: Kann man beim Befehl
Code: Alles auswählen
onCalculationfinished.set()
Derzeit sieht mein "vereinfachter" Code folgendermaßen aus:
Code: Alles auswählen
import threading
import time
import logging
logging.basicConfig(level=logging.DEBUG,
format='(%(threadName)-9s) %(message)s',)
def prog1():
print "test1"
def prog2():
print "test2"
if __name__ == '__main__':
Liste = [["onCalculationfinished", "(prog1, prog2)"]]
for dat in Liste:
exec("""def main_"""+dat[0]+"""(e, functions):
while True:
event_is_set = e.wait()
for func in functions:
func()
e.clear()""")
exec(dat[0]+" = threading.Event()")
exec("t1 = threading.Thread(name='"+dat[0]+"', target=main_"+dat[0]+", args=("+dat[0]+", "+dat[1]+"))")
exec("t1.daemon = True")
exec("t1.start()")
logging.debug('Waiting before calling Event.set()')
time.sleep(1)
onCalculationfinished.set()
time.sleep(1)
logging.debug('Event is set')