Python 后台运行

Python function in background

我想运行独立一个函数。从我调用的函数中,我想要 return 而不等待其他函数结束。

我用threadind试过了,不过这个要等,完了。

thread = threading.Thread(target=myFunc)
thread.daemon = True
thread.start()
return 'something'

是否可以立即return而另一个进程仍然运行? 感谢您的回答。

已编辑 工作代码如下所示:

 import concurrent.futures 
 executor = concurrent.futures.ThreadPoolExecutor(2) 
 executor.submit(myFunc, arg1, arg2)

如果我没有正确理解你的请求,你可能想看看工作队列 https://www.djangopackages.com/grids/g/workers-queues-tasks/

基本上,将工作卸载到在视图中创建的线程并不是一个好主意,这通常是通过后台工作池(进程、线程)和传入请求队列来处理的。

我认为您使用的语法是正确的,我不明白为什么您的请求不应该立即 return。您是否确认请求实际上挂起直到线程结束?

我建议设置 myFunc 写入一个文件供您跟踪

def myFunc():
    f = open('file.txt', 'w')
    while True:
        f.write('hello world')

您或多或少在问以下问题:

Is it possible to run function in a subprocess without threading or writing a separate file/script

您必须像这样更改 link 中的示例代码:

from multiprocessing import Process

def myFunc():
    pass  # whatever function you like

p = Process(target=myFunc)
p.start()  # start execution of myFunc() asychronously
print)'something')

p.start() 是异步执行的,即 'something' 会立即打印出来,无论 myFunc() 的执行有多耗时。脚本执行 myFunc() 并且不等待它完成。