我对编程很陌生,我正在运行Linux,python3.5
Stack Overflow中有一些类似的问题,但大多数都没有任何回应
。比如:[Python 2.7 多线程]在 Python 中,如何在子线程中超时函数调用?,以及 Python ,在不使用 signal 和 thread.join 的情况下对子线程上的函数进行超时。
当它在主线程和多进程超时时,我能够使用信号。但是,我当前正在运行的函数是使用 apscheduler 的子线程(或者可以直接启动)
schedule.add_job(test_upload.run, 'interval', seconds=10, start_date='2016-01-01 00:00:05',
args=['instant'])
并且我无法将其转换为子进程,因为我正在共享数据库连接。
我也试过 https://stackoverflow.com/a/36904264/2823816,但终端说
result = await future.result(timeout = timeout)
^
SyntaxError: invalid syntax
在
import concurrent
def run():
return 1
timeout = 10
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
future = executor.submit(run) # get a future object
try:
result = await future.result(timeout = timeout)
except concurrent.futures.TimeOutError:
result = None
我现在非常确定如何解决它:(感谢您的任何帮助。
我放弃了在子线程中超时线程。
所以我在子线程中使用了多进程来杀死它。我找不到任何其他解决方案。
https://github.com/dozysun/timeout-timer,在使用子线程作为计时器的子线程中工作正常