Python 的线程,没有调用 start 为什么也执行了? 请教下

2022-12-10 20:15:01 +08:00
 xiaoyanbot

如下代码, 无论有没有 main ,使用 threading.Thread 没有 start , 为什么运行都执行了。

Python 3.8+ , Win 和 Mac 表现都是在这个样子,请教下怎么回事,谢谢

代码片段一 [有 main 的] :

import time
import threading


def print_one():
    while True:
        print(time.time())
        time.sleep(2)


if __name__ == '__main__':
    t1 = threading.Thread(target=print_one())
    # t1.start()
    print(threading.enumerate())
    

代码片段二 [没有 main 的]

import time
import threading


def print_one():
    while True:
        print(time.time())
        time.sleep(2)


t1 = threading.Thread(target=print_one())
# t1.start()
print(threading.enumerate())

698 次点击
所在节点    问与答
3 条回复
stein42
2022-12-10 20:19:34 +08:00
t1 = threading.Thread(target=print_one) # 去掉 print_one 后的括号
xiaoyanbot
2022-12-10 20:27:51 +08:00
@stein42 感谢! 可以了
JasonLaw
2022-12-10 20:30:49 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/901589

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX