繁体   English   中英

如何在函数内执行Python函数而不是停止执行

[英]How to execute a Python function within a function and not stop the execution

我试图在不使用线程的情况下完成某些事情

我想在函数中执行一个函数,但我不希望第一个函数的流程停止。 它只是一个程序,我不期望任何返回,我也需要这个来保持执行由于某些原因。

这是我想要做的代码片段代码:

function foo():

    a = 5

    dosomething() 
    # I dont wan't to wait until dosomething finish. Just call and follow it

    return a

有没有办法做到这一点?

提前致谢。

您可以使用https://docs.python.org/3/library/concurrent.futures.html来实现“即发即弃”行为。

import concurrent.futures

def foo():
    a = 5

    with ThreadPoolExecutor(max_workers=1) as executor:
        future = executor.submit(dosomething)
        future.add_done_callback(on_something_done)
        #print(future.result())

    #continue without waiting dosomething()
    #future.cancel() #To cancel dosomething
    #future.done() #return True if done.

    return a

def on_something_done(future):
    print(future.result())

[更新]

concurrent.futures是自python 3以来内置的

对于Python 2.x,您可以在这里下载期货2.1.6

Python是同步的,你必须使用异步处理来实现这一点。

虽然有许多方法可以异步执行函数,但一种方法是使用python-rq Python-rq允许您将作业排队以便在后台与工作人员进行处理。 它由Redis提供支持,旨在降低进入门槛。 它应该很容易集成到您的Web堆栈中。

例如:

from rq import Queue, use_connection
def foo():
   use_connection()
   q = Queue()
   # do some things
   a = 5
   # now process something else asynchronously
   q.enqueue(do_something)
   # do more here
   return a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM