python多线程实现方法

发布于 2021-12-01 03:51:31 字数 487 浏览 750 评论 1

现在有这样一个需求,有一个队列线程一直在等待新的线程的推入,一旦有新的线程推入,它就会不停的轮询队列中所有的线程,并查询这个线程的状态,当这个被轮询的线程状态符合某个标准时,打印一句话,并且将这个状态符合某个标准的线程从队列中移除掉,当队列中没有任何线程时,队列线程会一直等待新线程的推入。要求,这个队列线程在轮询过程中允许新的线程被推入。


只要调用这个线程的程序在跑,那么这个线程类只new一次,调用这个线程的类会不定时的向队列线程中推入新的线程,调用的类把线程推入到这个队列线程中后它就不管了.

队列线程感觉可以用个list,直接把其他的新线程加进来,写个函数对item in list一直跑,找到了就把那个线程从list里拿掉。。。是不是挺简单的感觉。。

理想很性感,实现好骨感。。。。。可惜就实现不了。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拍不死你 2021-12-01 21:04:54

自己解决了,哈哈哈哈!!!

#!encoding:utf-8
import Queue
import threading

class parent:
    link = []
    queue = Queue.Queue(0)

    def __init__(self):
        # self.MyThread(self.queue).start()
        pass

    def addLink(self, pid):
        self.queue.put(pid)
        self.MyThread(self.queue).start()

    class MyThread(threading.Thread):
        th_link = []
        th_queue = []

        def __init__(self, queue):
            self.th_queue = queue
            threading.Thread.__init__(self)

        def run(self):
            while True:
                if self.th_queue.qsize() > 0:
                    pid = self.th_queue.get()
                    m = False
                    a = utilQu()
                    while not m:
                        returnType = a.pidStatus(pid=pid)
                        if returnType == "commplate" :
                            print "%s结束了n"%(pid)
                            break
                        else :
                            print "%s运行中....n"%(pid)

                else:
                    self.th_queue.join()

import random
class utilQu:
    temp = ["running", "running", "running", "running", "running", "running", "running", "running", "running",
            "commplate"]

    def pidStatus(self, pid):
        num = len(self.temp)
        index = random.randint(0, num - 1)
        # print "utilQu中获取到的下标为:%s,值为%s" % (index, self.temp[index])
        return self.temp[index]


a = parent()
a.addLink("aaaaaaaaa")
a.addLink("bbbbbbbbb")
a.addLink("ccccccccc")
a.addLink("ddddddddd")
a.addLink("eeeeeeeee")
a.addLink("fffffffff")

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文