python线程不是exi

2024-04-27 02:45:30 发布

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

我有一个使用线程的python脚本,下面是我的代码:

def main():
    ip_list = get_ip_list()   #['ip1', 'ip2'..., 'ipn'] thousands
    for x in ip_list:
        q.put(x)

    threads = []

    threads_num = 50
    for x in range(threads_num):
        w = Worker(q, stantard_config_to_dict, id_dict, logger,ip_position)
        threads.append(w)
        w.start()

    for w in threads:
        w.join()

    logger.debug('End of main thread, exit')
    print 'End of main thread, exit'


def run(self):
    while 1:
        try:
            ip = self.queue.get(False)
            self.logger.debug('%s get %s from queue, left %s in queue' % (self.getName(), ip, self.queue.qsize()))
            self.get_inter_conf(ip)
        except Queue.Empty:
            self.logger.debug('queue is empty, exit')
            break
    self.logger.info("%s finished" % (self.getName()))

字符串'End of main thread'现在无法打印,只有当我更改ip\U列表中的项数时才会打印。你知道吗

为什么会这样?你知道吗


Tags: ofindebugselfipforgetqueue