mirror of
https://github.com/infiniteCable2/panda.git
synced 2026-02-26 21:43:52 +08:00
* fix W391 * E262 * E703 * W293 * some E * E231 * some more E * E225 * more E * E252 * no tabs * more tabs * E701 * uds.py * almost all of them * only e265 left * not sure why this is triggering on commented out code * ignore esptool
26 lines
679 B
Python
26 lines
679 B
Python
import time
|
|
from multiprocessing import Process
|
|
|
|
# Note: this does not return any return values of the function, just the exit status
|
|
INTERVAL = 0.1
|
|
def run_with_timeout(timeout, fn, *kwargs):
|
|
def runner(fn, kwargs):
|
|
try:
|
|
fn(*kwargs)
|
|
except Exception as e:
|
|
print(e)
|
|
raise e
|
|
|
|
process = Process(target=runner, args=(fn, kwargs))
|
|
process.start()
|
|
|
|
counter = 0
|
|
while process.is_alive():
|
|
time.sleep(INTERVAL)
|
|
counter += 1
|
|
if (counter * INTERVAL) > timeout:
|
|
process.terminate()
|
|
raise TimeoutError("Function timed out!")
|
|
if process.exitcode != 0:
|
|
raise RuntimeError("Test failed with exit code: ", str(process.exitcode))
|