Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
异步运行的Python线程_Python_Python 3.x_Multithreading_Python Multithreading - Fatal编程技术网

异步运行的Python线程

异步运行的Python线程,python,python-3.x,multithreading,python-multithreading,Python,Python 3.x,Multithreading,Python Multithreading,我正在尝试运行下面的代码,希望它能够异步运行 import threading import time def mock_app(widgets=None, filters=None): print('Mock app called') task = threading.Thread(target=mock_app_handler(), args=()) task.start() print('Thread spawned') return "

我正在尝试运行下面的代码,希望它能够异步运行

import threading
import time


def mock_app(widgets=None, filters=None):
    print('Mock app called')
    task = threading.Thread(target=mock_app_handler(), args=())
    task.start()
    print('Thread spawned')
    return "success"


def mock_app_handler():
    # do something
    print('doing something')
    time.sleep(2)
    print('done something')


print(mock_app())
但是,代码是同步执行的。我得到以下结果

Mock app called
doing something
done something
Thread spawned
success
为什么会这样?我错过什么了吗

更新:
我尝试设置task.daemon=True。这也不起作用。

问题是,您调用的是函数
mock\u app\u handler
,而不是传递函数对象。中的
目标
需要一个可调用的。所以

而不是

task = threading.Thread(target=mock_app_handler(), args=())
使用


另外,您不需要传递空的
args
,因为函数
mock\u app\u处理程序
不需要任何
args

问题是,您调用的是函数
mock\u app\u处理程序
,而不是传递函数对象。中的
目标
需要一个可调用的。所以

而不是

task = threading.Thread(target=mock_app_handler(), args=())
使用


此外,您也不需要传递空的
args
,因为函数
mock\u app\u处理程序
不需要任何
args

task=threading.Thread(target=mock\u app\u handler)
不在那里调用函数,而是传递函数对象。另外,您不需要在那里使用
args
,因为该函数不接受任何参数arguments@hansolo谢谢我的错。直到现在我才意识到。“现在工作了。”汉索洛补充道。我会接受的,当然。谢谢:)
task=threading.Thread(target=mock_app_handler)
#不要在那里调用函数,而是传递函数对象。另外,您不需要在那里使用
args
,因为该函数不接受任何参数arguments@hansolo谢谢我的错。直到现在我才意识到。“现在工作了。”汉索洛补充道。我会接受的,当然。谢谢:)我的代码是实际代码的精简版本。实际代码具有要传递的参数。谢谢。@没脑子哦,好的。当然:)我的代码是实际代码的精简版本。实际代码具有要传递的参数。谢谢。@没脑子哦,好的。当然可以:)