Таймаут для сторонней функции

Есть некая функция сторонней библиотеки foo, которую я не могу менять. Как в моём коде произвести вызов с такой логикой: 1) вызвать foo; 2) продолжить выполнение следующих команд либо по окончании foo, либо по прошествии N секунд? Надо чтобы работало как на линуксе, так и на винде.


Ответы (1 шт):

Автор решения: Alpensin

Тут нужны уточнения

  1. Мы ждем от foo каких-то значений?
  2. Должна ли foo прекращать работу при таймауте или пусть работает дальше, хоть мы и не ждём уже результата.

Самый простой вариант, если на оба вопроса выше ответ нет

Модуль conc.py

from some import foo
from threading import Thread


def main():
    print("main started")
    thread = Thread(target=foo)
    thread.start()
    thread.join(timeout=2)
    print("main finished")


if __name__ == '__main__':
    main()

Модуль some.py

from time import sleep


def foo():
    sleep(5)
    with open("test.txt", "w") as f:
        f.write("k")
→ Ссылка