首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python线程。为什么线程会互相阻塞?

Python线程。为什么线程会互相阻塞?
EN

Stack Overflow用户
提问于 2018-06-19 09:25:19
回答 1查看 2.1K关注 0票数 1
代码语言:javascript
复制
import threading
import time

def someMethod(x):
    time.sleep(20)
    print(x);

def someMethod2(x):
    time.sleep(1)
    print(x);

t1 = threading.Thread(name="t1", target=someMethod(1));
t2 = threading.Thread(name="t2", target=someMethod2(2));

t1.start();
t2.start();

我预计输出结果是2后跟1,但实际上是1后跟2,总时间是21秒。我如何让它并行运行,这样输出是2,然后是1,并且两个线程并行运行,所以总时间是20个单元?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-19 09:28:30

您在主线程中调用函数并将它们的返回值作为线程入口点传递(因为它们都返回None,这意味着无操作入口点),您实际上并没有在单独的线程中运行它们。您还调用了someMethod两次,但从未调用过someMethod2。要进行修复,请更改为:

代码语言:javascript
复制
t1 = threading.Thread(name="t1", target=someMethod, args=(1,))
t2 = threading.Thread(name="t2", target=someMethod2, args=(2,))

它正确地传递对函数本身的引用作为入口点,使用要使用的参数,直到线程实际启动时才执行。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50919440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档