如何在多个函数中使用Python队列

2024-06-16 08:57:06 发布

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

我在多个函数中访问类中的queue对象时遇到了一个问题,下面的代码可能会向您展示我正在尝试做什么

import MySQLdb
import socket, sys
from struct import *
import threading
import sched, time
from datetime import datetime
from copy import deepcopy
import Queue
IP = {}

class QP:

 def __init__(self):
        self.jobs = Queue.Queue()

    # this function runs every 10 seconds
    # and processes any queued data.
 def processQueue(self):
        print(self.jobs.qsize())
        time.sleep(5)
        if self.jobs.empty():
            print("No items in queue")
        else:
            IP_TEMP = {}
            IP_TEMP = self.jobs.get()
            IP_TEMP_QUEUE = {}
            IP_TEMP_QUEUE = IP_TEMP
            try:
                cnx = #connect to database
                cursor = cnx.cursor()
                for k, v in IP_TEMP.iteritems():

                    #there is some code here, but its not the issue

                    try:
                        cursor.execute(add_packet, data_packet)
                        cnx.commit()
                        print("Task Done")
                    except:
                        print("Query failed, skipping")
                        break
            except:
                self.queueJobs(IP_TEMP_QUEUE)

            IP = {}
            self.jobs.task_done()
            self.processQueue()

    # this function is called by other modules to add data
 def queueJobs(self, data):
        self.jobs.put(data)
        print(self.jobs.qsize())
        return True

这是我在其他模块中调用queueJobs方法的方式:

^{pr2}$

现在,主要问题是processQueue()函数总是返回队列中没有作业,即使它们已经添加到queueJobs()函数的下面。在

任何帮助都太好了!在


Tags: 函数fromimportselfipdataqueuedef