import threading
import gobject, multiprocessing

gobject.threads_init()
loop = gobject.MainLoop()

def perform_operation(foo):
    gobject.timeout_add_seconds(1, quit)


class Test():
    def __init__(self):
        gobject.timeout_add_seconds(5, self.refresh)

    def refresh(self):
        print "Creating"
        MapAsync(perform_operation, self.loading_complete, self.loading_failed)
        return True


class MapAsync(threading.Thread):

    def __init__(self, func, callback, failure, timeout=120):
        threading.Thread.__init__(self)
        self.func = func
        self.callback = callback
        self.failure = failure
        self.timeout = timeout
        self.start()

    def run(self):
        proc = multiprocessing.Process(target=self.func, args=["foo"])
        proc.start()


Test()
loop.run()
