if __name__ == '__main__': last = [time.time()] def tprint(*args): print(threading.current_thread().name + '\t(sleep ' + str(time.time() - last[0])[:5] + ' seconds)\t' + ' '.join(args)) last[0] = time.time() print("""Expected output: Thread-1 (sleep 0 s) started Thread-3 (sleep 1 s) a Thread-5 (sleep 1 s) a Thread-7 (sleep 1 s) a Thread-9 (sleep 1 s) a """) def w(): tprint('started') b = None i = [0] def a(): tprint('a') time.sleep(0.5) if i[0] < 3: i[0] += 1 else: clear_interval(b) b = set_interval(a, 1) run(w)
""") def w(): tprint('started') def on_message(message): tprint('w message: ' + message) on("message", on_message) b = None i = [0] def a(): tprint('a') time.sleep(0.5) post_message('hi from w again!') if i[0] < 3: i[0] += 1 else: clear_interval(b) b = set_interval(a, 1) time.sleep(0.05) post_message('hi from w!') def main(): wor = worker(w) def on_message(message): tprint('main message: ' + message) wor.on("message", on_message) time.sleep(0.2) wor.post_message('hello from main!') time.sleep(0.5) wor.post_message('hello from main again!') time.sleep(0.1) run(main)