如何检查哪个线程首先返回结果

2024-09-28 23:18:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用python,我需要检查哪个线程首先返回值,或者换言之,哪个线程首先停止,我需要知道是否有用于此的内置函数

下面是我的线程代码

t6 = threading.Thread(target=dawnNewsCrawl,args=(dawnThreadReturn[1],))
t7 = threading.Thread(target=geoNewsCrawl,args=(geoThreadReturn[1],))
t8 = threading.Thread(target=aryNewsCrawl,args=(aryThreadReturn[1],))
t9 = threading.Thread(target=samaaNewsCrawl,args=(samaaThreadReturn[1],))
t10 = threading.Thread(target=dailyTimesNewsCrawl,args=(dailyTimesThreadReturn[1],))

thread6 = t6.start()
thread7 = t7.start()
thread8 = t8.start()
thread9 = t9.start()
thread10 = t10.start()

t6.join()
t7.join()
t8.join()
t9.join()
t10.join()

Tags: 函数targetargs线程threadstart内置threading
1条回答
网友
1楼 · 发布于 2024-09-28 23:18:03

如果你想找出这个来管理线程,那么你应该考虑使用线程池。如果这不能满足您的要求,那么您可以在线程上使用is_-alive方法,请检查下面的代码以了解is_-alive方法的用法。它会在执行线程时立即进行标识

import threading
import random
import time


def sleep(tid):
    sec = random.randint(1, 10)
    print("ID:{} sleep: {}".format(tid, sec))
    time.sleep(sec)
    print("ID:{} Done".format(tid))


threads = []
for i in range(5):
    t = threading.Thread(target=sleep, args=(i + 1,))
    threads.append(t)

for thread in threads:
    thread.start()

cnt = 5
i = 0
completed = set()
while cnt:
    i %= 5
    if i in completed or threads[i].is_alive():
        i += 1
        continue
    print("Thread: {} completed".format(i + 1))
    completed.add(i)
    i += 1
    cnt -= 1

相关问题 更多 >