精华内容
下载资源
问答
  • 本文实例讲述了Python实现的生产者、消费者问题。分享给大家供大家参考,具体如下:生产者、消费者问题,经典的线程同步问题:假设有一个缓冲池(列表),生产者往里面放东西,消费者从里面取,规则是:列表为空的时候...

    本文实例讲述了Python实现的生产者、消费者问题。分享给大家供大家参考,具体如下:

    生产者、消费者问题,经典的线程同步问题:假设有一个缓冲池(列表),生产者往里面放东西,消费者从里面取,规则是:列表为空的时候,生产者才能放东西;列表不为空的时候,消费者才能取东西;为了简单起见,暂定缓冲池中最多只能有一个产品。这里生产者和消费者共同操作一个资源:缓冲池,因此每次操作的时候,需要给资源加锁,操作结束时,释放锁,这样才能做到资源同步。使用python实现,需要继承Thread类,获取锁对象,代码如下:

    # -*- coding:utf-8 -*-

    #! python2

    from threading import Thread

    from threading import Lock

    import time,random

    pro_list = []

    lock = Lock()

    class Producer(Thread):

    def run(self):

    global pro_list

    while True:

    i = random.randint(0, 100)

    lock.acquire()

    if len(pro_list) > 0:

    print "!--product still in list, wait consumer to get it.."

    else:

    pro_list.append(i)

    print ":::Producer put:", pro_list[0]

    lock.release()

    time.sleep(2)

    class Consumer(Thread):

    def run(self):

    global pro_list

    while True:

    lock.acquire()

    if len(pro_list) == 0:

    print "!--No product now, wait producer put in..."

    else:

    print ":::Consumer fetch:", pro_list[0]

    pro_list.pop(0)

    lock.release()

    time.sleep(2)

    Producer().start()

    Producer().start()

    Consumer().start()

    Producer().start()

    Producer().start()

    Consumer().start()

    Consumer().start()

    这里使用多个生产者和消费者,共同操作缓冲池,部分执行结果如下:

    :::Producer put: 78

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 78

    :::Producer put: 99

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 99

    !--No product now, wait producer put in...

    :::Producer put: 12

    :::Consumer fetch: 12

    :::Producer put: 91

    !--product still in list, wait consumer to get it..

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 91

    !--No product now, wait producer put in...

    :::Producer put: 63

    :::Consumer fetch: 63

    :::Producer put: 85

    !--product still in list, wait consumer to get it..

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 85

    !--No product now, wait producer put in...

    :::Producer put: 1

    :::Consumer fetch: 1

    :::Producer put: 26

    !--product still in list, wait consumer to get it..

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 26

    !--No product now, wait producer put in...

    :::Producer put: 8

    :::Consumer fetch: 8

    :::Producer put: 19

    !--product still in list, wait consumer to get it..

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 19

    !--No product now, wait producer put in...

    :::Producer put: 74

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 74

    :::Producer put: 50

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 50

    !--No product now, wait producer put in...

    :::Producer put: 97

    :::Consumer fetch: 97

    :::Producer put: 69

    !--product still in list, wait consumer to get it..

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 69

    !--No product now, wait producer put in...

    :::Producer put: 41

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 41

    :::Producer put: 6

    !--product still in list, wait consumer to get it..

    :::Consumer fetch: 6

    !--No product now, wait producer put in...

    希望本文所述对大家Python程序设计有所帮助。

    展开全文
  • 这篇博客不定期更新,一些可以通过一行代码解决实际问题案例。 Overviewdate 转 datetimeReference date 转 datetime 注: >>> from datetime import date >>> from datetime import ...

    这篇博客不定期更新,一些可以通过一行代码解决实际问题的案例。




    date 转 datetime

    注:

    >>> from datetime import date
    >>> from datetime import datetime
    

    普通的写法:

    >>> date_ = date.today()  # line (1)
    >>> date_
    datetime.date(2020, 11, 26)
    >>> datetime(year=date_.year, month=date_.month, day=date_.day) # line(2)
    datetime.datetime(2020, 11, 26, 0, 0)
    

    one-liner 写法:

    >>> datetime.strptime(str(date.today()), '%Y-%m-%d')
    datetime.datetime(2020, 11, 26, 0, 0)
    


    Reference

    展开全文
  • 使用框图进行顺序程序设计的一般过程 关于框图的工具各种各样,给大家推荐一个相对来说简单实用的(Diagram Designer),关于如何下载这里就不介绍了 ...我们使用Diagram Designer将实际问题转化为顺...

    使用框图进行顺序程序设计的一般过程

    关于框图的工具各种各样,给大家推荐一个相对来说简单实用的(Diagram Designer),关于如何下载这里就不介绍了
    下面我们看一个实际的案例:已知三角形的两边A,B和夹角,计算第三边C的长度
    从这个例子,我们可以运用初中的知识解决,但是我们该怎么转化为python程序来解决这个问题呢?

    1.第一步

    我们使用Diagram Designer将实际问题转化为顺序步骤解决问题

    2.第二步

    书写我们的Python代码

    import math
    x= input("输入两边及其夹角(度)(以逗号分隔):")
    a, b, sita = x
    c = math.sqrt(a2 + b2 - 2ab*math.cos(sita * math.pi/180))
    print(str(c))

    3.第三步

    当然这也我们成功最核心的一步---查看我们的成果

    我们看到输出的5.0证明第三边的长度是5.0,这和我们数学上算出的结果一致,说明我们这个顺序程序设计小案例成功\

    人生苦短,我选Python,欢迎留言

    转载于:https://juejin.im/post/5b56da3d6fb9a04faf47ad59

    展开全文
  • 本书不仅从计算机教学和计算机科学的角度讲解了初学者如何才能更有效地去学习python,而且特别强调用python解决生活中的实际问题,精心组织了大量来源于生活中不同领域的与数值计算和数据处理相关的案例。...
  • 生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程–即所谓的"生产者"和"消费者"–...

    实验背景

    生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程–即所谓的"生产者"和"消费者"–在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。

    实验目的

    要解决该问题,就必须让生产者在缓冲区满时休眠(要么干脆就放弃数据),等到下次消费者消耗缓冲区中的数据的时候,生产者才能被唤醒,开始往缓冲区添加数据。同样,也可以让消费者在缓冲区空时进入休眠,等到生产者往缓冲区添加数据之后,再唤醒消费者。通常采用进程间通信的方法解决该问题,常用的方法有信号灯法等。如果解决方法不够完善,则容易出现死锁的情况。出现死锁时,两个线程都会陷入休眠,等待对方唤醒自己。

    实验核心代码

    生产者代码:
    while True:
                num = random.choice(nums)  #.chioce 从数组中获得一个随机数赋值给num
                condition.acquire()
                
                if len(queue) >= 20:   #判断数组长度是否大于20
                    print("-------------------------------------------------------------------------------")
                    print("存票数目为最大值,请稍后申请!")
                    condition.wait(0)
                else:
                         
                    queue.append(num)    #.append 插入数组末尾并返回插入数值
                    print("-------------------------------------------------------------------------------")
                    print("此次生产机票编码为",num)
                    print("生产机票数目为:",len(queue))
                    print("还可生产机票数目为:",20-len(queue))
             
                    condition.notify()  #通知另一个进程
              
                condition.release()
               
                time.sleep(random.random())
    消费者代码:
    while True:
                condition.acquire()    #锁定线程模块
                #if not queue:
               
                
                if len(queue) < 1:
                    print("-------------------------------------------------------------------------------")
                    print("本机所申请机票已售完,正在申请资源,请稍等————")
                    condition.wait()
                else:
                    
                    num = queue.pop()   #  .pop删除队列第0个元素,并返回删除值
                    
                    print("-------------------------------------------------------------------------------")
                    print("此次出售机票编码为",num)
                    #print("待出售机票数目为:"20-len(queue)+20)
                    condition.notify()   #j激活另一个模块
                condition.release()     #释放线程模块
                
                time.sleep(random.random())   #消费模块休眠一个随机时间
    

    程序调试过程

    • 1、 只运行生产者模块

    在这里插入图片描述

    • 2、 只运行消费者模块

    在这里插入图片描述

    • 3、 运行全部程序

    在这里插入图片描述

    测试结果

    • 1、只运行生产者模块

    在这里插入图片描述

    • 2、 只运行消费者模块

    在这里插入图片描述

    • 3、 运行全部程序

    在这里插入图片描述

    程序源代码

    
    ```python
    
    ```python
    '''----author---wangming'''
    import threading
    import time
    import random
    queue = []
    condition = threading.Condition()      #提供对复杂线程同步问题的支持
    print('''
    
               欢迎进入智能售票系统,接下来将进入模拟真实售票实况,加载中
    --------------------------------------------------------------------------------
    
    
        1.本售票点最多可同时出售10张机票,超出部分请稍后购买。
        2  出现机器故障,请呼叫工作人员。
    
    
                                                                   祝你路途愉快!
    --------------------------------------------------------------------------------''')
    class ProducerThread(threading.Thread):
        def run(self):
            nums = range(1000000000,10000000000000)   #获得一个数组【0,1,2,3,4】
            global queue
            while True:
                num = random.choice(nums)  #.chioce 从数组中获得一个随机数赋值给num
                condition.acquire()
                if len(queue) >= 20:   #判断数组长度是否大于20
                    print("-------------------------------------------------------------------------------")
                    print("存票数目为最大值,请稍后申请!")
                    condition.wait(0)
                else:     
                    queue.append(num)    #.append 插入数组末尾并返回插入数值
                    print("-------------------------------------------------------------------------------")
                    print("此次生产机票编码为",num)
                    print("生产机票数目为:",len(queue))
                    print("还可生产机票数目为:",20-len(queue))
                    condition.notify()  #通知另一个进程
                condition.release()
                time.sleep(random.random())
                   
    class ConsumerThread(threading.Thread):
        def run(self):
            global queue              #global关键字是用来引用全局变量的
            member = len(queue)
            while True:
                condition.acquire()    #锁定线程模块
                #if not queue:
                if len(queue) < 1:
                    print("-------------------------------------------------------------------------------")
                    print("本机所申请机票已售完,正在申请资源,请稍等————")
                    condition.wait()
                else:
                    num = queue.pop()   #  .pop删除队列第0个元素,并返回删除值
                    print("-------------------------------------------------------------------------------")
                    print("此次出售机票编码为",num)
                    #print("待出售机票数目为:"20-len(queue)+20)
                    condition.notify()   #j激活另一个模块
                condition.release()     #释放线程模块
                time.sleep(random.random())   #消费模块休眠一个随机时间
    
    
    
    ProducerThread().start()
    ConsumerThread().start()
    
    
    
    展开全文
  • 它不仅从计算机教学和计算机科学的角度讲解了初学者如何才能更有效地去学习Python,而且特别强调用Python解决生活中的实际问题,精心组织了大量来源于生活中不同领域的与数值计算和数据处理相关的案例。 《Python...
  • 本课程侧重于实践,引入丰富案例解决实际问题;在实践中学习总结知识点和理论内容。 采用大量爬虫项目案例,更具体实际应用。 覆盖90%以上requests + beautiful常用功能及经典实战案例。 全套课程代码及课程资源...
  • ​ 通过这个编程练习,可以熟悉运用面向对象的思想来解决实际问题,其中用到的知识点有类的封装、正则表达式、模块等。 3、体会 ​ 在编写这个程序时,实际上的业务逻辑还是要考虑的,比如修改密码时需要输入手机号...
  • 亮点: 1—从安装到使用,适合入门小白。 2—唯一使用Python3.5来教机器学习的。...对于机器学习经典算法给出完整的原理推导并基于实例进行讲解,基于案例演示如何应用机器学习算法解决实际问题。 课程特点:  ...
  • @[TOC]目录 第一次发帖。...初始python版本(解决问题的过程中更换版本了) Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] 问题解决过程 1)第一次安装VS2017 根据
  • 如果能够灵活运用,将能够解决工作中 80% 以上问题。注意的是,方法论是思维层面,方法是执行层面。那么,重点是我们如何将其应用到实际业务中。本文将以 RFM 模型 为例,运用到实际案例中。(本文
  • 今天就用实际案例讲解如何爬取动态的网站视频。 环境配置:python3:爬虫库request、json模块,Pycharm 爬虫的一般思路:分析目标网页,确定url—发送请求,获取响应—解析数据—保存数据 爬取目标:方便看视频 ...
  • 分享给大家供大家参考,具体如下:结巴分词工具的安装及基本用法,前面的文章《Python结巴中文分词工具使用过程中遇到的问题解决方法》中已经有所描述。这里要说的内容与实际应用更贴近——从文本中读取中文信息,...
  • 实际案例:  某编程竞赛系统,对参赛选手编程解体进行计时,选手完成题目后,吧该选手解体用时记录到字典中,以便赛后按选手名查询成绩  {'Lilei':(2,43),'HanMei':(5,52),'Jim':(1,39)...} 比赛结束后,需按排名...
  • 实际案例: 1. 某随机序列 [12,5,6,4,6,5,5,7]中,找到出现次数最高的3个元素,它们出现的次数是多少? 2. 对于某英文文章的单词,进行词频统计,找到出现次数最高的10个单词,它们出现次数是多少? 案例一: 1. 某随机...
  • python入门

    2018-10-22 12:40:23
    它不仅从计算机教学和计算机科学的角度讲解了初学者如何才能更有效地去学习Python,而且特别强调用Python解决生活中的实际问题,精心组织了大量来源于生活中不同领域的与数值计算和数据处理相关的案例
  • 结巴分词工具的安装及基本用法,前面的文章《Python结巴中文分词工具使用过程中遇到的问题解决方法》中已经有所描述。这里要说的内容与实际应用更贴近——从文本中读取中文信息,利用结巴分词工具进行分词及词性...
  • 项目场景:xpath数据解析案例 问题描述: 环境:python3.8.5 from lxml import etree无法使用etree,目前博主已解决(网上坑太多了花了我一天呜呜~) 原因分析: 原因很简单,etree整合到了html中,但是当你查看__init...
  • Python实践:开篇

    2013-10-16 11:57:00
    Python实践 是应用Python解决实际问题案例集合,这些案例中的Python应用通常 功能各异、大小不一。 该系列文章是本人应用Python的实践总结,会不定期更新。 二、目录 Python实践:提取文章摘要 Python实践:...
  • Python入门经典

    2017-06-02 10:08:55
    它不仅从计算机教学和计算机科学的角度讲解了初学者如何才能更有效地去学习Python,而且特别强调用Python解决生活中的实际问题,精心组织了大量来源于生活中不同领域的与数值计算和数据处理相关的案例。通过《Python...
  • 极简python入门课程

    2021-05-22 23:06:24
    1、课程基于Python3讲解,从基础技能到实际案例,并辅以练习演示、课后作业及社区答疑; 2、带你充分建立编程思维,... 4、通过标准库和第三方库,编写出能解决实际问题的工具; 5、完整的 Python 入门+实战学习路径。
  • 实际案例: 1.过滤掉列表 [3,9,-1,10,20,-2..]的负数 2.筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项 3.筛出集合 {77,89,32,20..}中能被3整出的元素 ---最通用方法,FOR循环迭代,加上if判断进行...
  • 语义不清,计算机就无法知道所要解决问题的步骤,也就无法执行程序。 用自然语言描述程序设计语言的语法,存在不同程度的二义性。这种模糊、不确定的方式无法精确定义一门程序设计语言。最著名的文法描述形式是由...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 225
精华内容 90
关键字:

python解决实际问题案例

python 订阅