python老是报错_python 多线程读写文件错误_python多线程老是报错。大神帮忙看看哈?...

本文讨论了在Python中遇到多线程读写文件时出现的错误,通过一段示例代码展示了问题所在,即在Consumer类的consume方法中条件变量名conditon拼写错误。错误提示显示在尝试acquire未定义的'conditon'时引发NameError。修复此问题的方法是更正变量名,将'conditon'改为'condition'。
摘要由CSDN通过智能技术生成

以下是代码:importthreadingimporttimeproducts=[]condition=threading.Condition()classConsumer(threading.Thread):defconsume(self):globalconditionglobalproductsconditon.acqu...

以下是代码:

import threading

import time

products=[]

condition = threading.Condition()

class Consumer(threading.Thread):

def consume(self):

global condition

global products

conditon.acquire()

if len(products)==0:

condition.wait()

print('消费提醒:没有产品去消费了')

products.pop()

print('消费者提醒:消费1个产品')

print('消费者提醒:还能消费的产品数为'+str(len(products)))

condition.notify()

condition.release()

def run(self):

for i in range(0,20):

time.sleep(4)

self.consume()

class Producer(threading.Thread):

def produce(self):

global condition

global products

condition.acquire()

if len(products)==10:

condition.wait()

print('生产者提醒:生成的产品数为'+str(len(products)))

print('生产者提醒:停止生产!')

products.append(1)

print('生产者提醒:产品总数为'+str(len(products)))

condition.notify()

condition.release()

def run(self):

for i in range(0,20):

time.sleep(1)

self.produce()

producer=Producer()

consumer=Consumer()

consumer.start()

producer.start()

producer.join()

consumer.join()

报错的提示:

Exception in thread Thread-2:

Traceback (most recent call last):

File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 932, in _bootstrap_inner

self.run()

File "C:/Users/Administrator/AppData/Local/Programs/Python/Python38-32/对对对.py", line 22, in run

self.consume()

File "C:/Users/Administrator/AppData/Local/Programs/Python/Python38-32/对对对.py", line 10, in consume

conditon.acquire()

NameError: name 'conditon' is not defined

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值