Ipython监狱的意外行为

2024-04-25 22:56:51 发布

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

我正在尝试从Ipython控制台和cmd运行代码

这里是代码,但重要的是请检查我下面描述的两个场景

#coding: utf-8

import sys, logging, time, os, random
from multiprocessing import Process, Queue, Pool, \
    cpu_count, current_process, Manager

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(message)s')

ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)

def producer_task(q, fibo_dict):
    for i in range(15):
        value = random.randint(1, 20)
        fibo_dict[value] = None
        logger.info("Producer [%s] putting value [%d] into queue.. " % (current_process().name, value))
        q.put(value)

def consumer_task(q, fibo_dict):
    while not q.empty():
        value = q.get(True, 0.05)
        a, b = 0, 1
        for item in range(value):
            a, b = b, a + b
            fibo_dict[value] = a
        logger.info("consumer [%s] getting value [%d] from queue..." % (current_process().name, value))

data_queue = Queue()
number_of_cpus = cpu_count()
manager = Manager()
fibo_dict = manager.dict()

producer = Process(target=producer_task, args=(data_queue, fibo_dict))
producer.start()
producer.join()

2种情况:

1)当我将代码保存为tes*.py并从CMD(python test.py)运行时,它工作正常, 2) 当我复制Ipython中的代码并执行(Ctrl+Enter)时。我得到一个奇怪的错误AttributeError:'module'objet没有属性'consumer\u task'

有人能解释一下哪里出错了吗。提前谢谢


Tags: producer代码importtaskqueueconsumervaluelogging