J'essaie d'exécuter ce qui suit dans Eclipse (en utilisant PyDev) et je continue à recevoir des erreurs:
q = queue.Queue (maxsize = 0) NameError: le nom global 'queue' n'est pas défini
J'ai vérifié les documentations et il semble que c'est comme ça que ça doit être placé. Est-ce que j'ai râté quelque chose? Est-ce ainsi que PyDev fonctionne? ou manque quelque chose dans le code? Merci pour toute aide.
from queue import *
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
def main():
q = queue.Queue(maxsize=0)
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join() # block until all tasks are done
main()
Utilisation: SDK Eclipse
Version: 3.8.1 ID de version: M20120914-1540
et Python 3.3
Tu fais
from queue import *
Cela importe déjà toutes les classes du module queue
. Remplacez cette ligne par
q = Queue(maxsize=0)
C'est parce que vous utilisez: from queue import *
et ensuite vous essayez d'utiliser:
queue.Queue(maxsize=0)
supprimez la partie queue
, car from queue import *
importe tous les attributs dans l'espace de noms courant. :
Queue(maxsize=0)
ou utiliser import queue
au lieu de from queue import *
.
Si vous importez from queue import *
, Cela signifie que toutes les classes et fonctions qui importent dans votre code sont entièrement. Vous ne devez donc pas écrire le nom du module, juste q = Queue(maxsize=100)
. Mais si vous voulez utiliser des classes avec le nom du module: q = queue.Queue(maxsize=100)
vous devez écrire une autre chaîne d'importation: import queue
, Cela signifie que vous importez tous les modules avec toutes les fonctions non seulement toutes les fonctions qui en premier Cas.