use multiprocessing.Process instead of threading.Thread