肥学 2021-07-15 15:21 采纳率: 83.3%
浏览 34
已采纳

python多线程设置traget的问题

import threading
import time
def thread_run():
    print("frist")
    for i in range(10):
        time.sleep(1)
    print("frist finish")


def main():
    add_thread=threading.Thread(target=thread_run)#target后面换成tread_run()加括号了为什么会不一样
    add_thread.start()
    print("second")


if __name__ == '__main__':
    main()
  • 写回答

3条回答 默认 最新

  • 雷学委 优质创作者: python技术领域 2021-07-15 23:33
    关注

    这个问题还是比较基础啊,它的重点是Thread构造函数中需要给的target参数要求是一个callable对象。
    在Thread内部有一个run函数,运行target指向的方法。这个才是重点。
    什么时候可以给个加括弧的,如果thread_run内部改造为类似下面的callable_generator返回的是一个函数, 如下代码。那么你可以传入target=callable_generator(),否则thread_run()返回值是None。

    def callable_generator():
        print("execute immediately")
        def run():
            time.sleep(1)
            print("call in run")
        return run
    

    你看看这个吧:
    https://docs.python.org/3/library/threading.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 7月16日
  • 创建了问题 7月15日