首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python线程中正确使用join(timeout)?

如何在Python线程中正确使用join(timeout)?
EN

Stack Overflow用户
提问于 2014-06-07 03:51:26
回答 1查看 2K关注 0票数 1

如何正确使用以下示例中的join(timeout)函数?超时似乎对主线程的执行没有影响。在文档中,主线程被阻塞,直到线程加入或超时。

代码语言:javascript
运行
复制
import threading,time

class Server(threading.Thread):

    def __init__(self, hostname):
        super(Server, self).__init__()
        self.__hostname = hostname

    def run(self):
        print self.__hostname+' left'
        time.sleep(5)
        print self.__hostname+' back'
        sem.release()

#init
sem = threading.BoundedSemaphore(4)
threads = []

for x in xrange(1,5):
    sem.acquire()
    t = Server('thread '+str(x))
    threads.append(t)
    t.start()

for t in threads:
    t.join(2)

print 'why is this line executed by main thread 5 seconds after, not 2?'
EN

回答 1

Stack Overflow用户

发布于 2014-06-07 03:56:01

您有一个for循环,它尝试以2秒的超时时间加入4个线程中的每个线程。

第一个.join()调用花费了整整2秒,然后超时。第二个做同样的事情。第三个线程在5秒后结束(在第三个.join(2)调用后1秒),而第四个线程在加入时已经完成。2+2+1= 5。

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

https://stackoverflow.com/questions/24089643

复制
相关文章

相似问题

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