首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调度函数作为后台任务运行

如何调度函数作为后台任务运行
EN

Stack Overflow用户
提问于 2020-02-25 14:05:45
回答 1查看 53关注 0票数 1

为我糟糕的措辞道歉,但我要说了。

当其他任务正在运行时,我需要每30分钟执行一次函数,但是我不知道如何做到这一点,也不知道如何将其转换为google。我的目标是修改我的脚本,让它像任务管理器程序一样运行(没有UI),包括后台服务、程序、实用程序等。

我试图通过对每个函数计时并创建执行其他函数的函数来创建它,然而,无论我尝试什么,它都像任何脚本一样以异步方式运行。

下面就是一个这样的例子。

代码语言:javascript
复制
def function_1():
    """Perform operations"""
    pass

def function_2():
    """Perform operations"""
    pass

def executeAllFunctions():
    function_1()
    function_2()

function_2以正常方式执行时,如何将function_1初始化为后台任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-25 17:10:32

here有一个很好的答案。其主要思想是在线程内的一个永久循环中运行异步协程。

在你的例子中,你必须将函数一定义为协程,在线程中使用一个调用者函数并创建一个线程。

示例很大程度上启发了链接中的答案,但也适用于您的问题。

代码语言:javascript
复制
@asyncio.coroutine
def function_1():
    while True:
       do_stuff
       yield from asyncio.sleep(1800)

def wrapper(loop):
    asyncio.set_event_loop(loop)
    loop.run_until_complete(function_1())

def function_2():
    do_stuff


def launch():
    loop = asyncio.get_event_loop()  
    t = threading.Thread(target=wrapper, args=(loop,))  # create the thread
    t.start()  # launch the thread

    function_2()
    t.exit() # when function_2 return
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60388403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档