精华内容
下载资源
问答
  • pythonlab Python基础 编写一个使用三个数字并打印其总和的程序。 每个数字都在单独的行中给。 编写一个程序,读取底边的长度和直角三角形的高度并打印该区域。 每个数字都在单独的行中给... 该程序应读取三个
  • 对http://pic.netbian.com发送一个get请求,分析请求回来的数据包,解析各个分类首页链接! 查看下载原图按钮的请求路径,发现这个是js动态绑定的事件,然后去找js源码! 通过js源码,我们可以发现,他是获取...
  • Python生成数独

    2020-12-21 07:30:51
    上次做出了怎么算数独,开心坏了,鼻子翘起还没两天,脑瓜又蹦了个新想法:创造数独。 于是乎,又捣鼓捣鼓,终于出来了!(吼吼吼吼吼~~~) 这个算法的基本思路是这样的: 1、定义一个空的数独出来; 2、随机...
  • python 多进程

    2015-07-23 19:39:19
    最近看了下多进程。 一种接近底层的实现方法是使用 os.fork()方法,fork子进程。但是这样做事有局限性的。...这个没过,但从vamei的博客看到说也同样有局限性。 所以直接说主角吧 --- multiprocessing

    最近看了下多进程。

    一种接近底层的实现方法是使用 os.fork()方法,fork出子进程。但是这样做事有局限性的。比如windows的os模块里面没有 fork() 方法。

    windows:bubuko.com,布布扣。linux:bubuko.com,布布扣

     

    另外还有一个模块:subprocess。这个没整过,但从vamei的博客里看到说也同样有局限性。

    所以直接说主角吧 --- multiprocessing模块。 multiprocessing模块会在windows上时模拟出fork的效果,可以实现跨平台,所以大多数都使用multiprocessing。

    下面给一段简单的代码,演示一下创建进程:

    #encoding:utf-8
    from multiprocessing import Process
    import os, time, random
    
    #线程启动后实际执行的代码块
    def r1(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
    
    def r2(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
        
    if __name__ == "__main__":
            print "main process run..."
            p1 = Process(target=r1, args=(‘process_name1‘, ))       #target:指定进程执行的函数,args:该函数的参数,需要使用tuple
            p2 = Process(target=r2, args=(‘process_name2‘, ))
            
            p1.start()    #通过调用start方法启动进程,跟线程差不多。
            p2.start()    #但run方法在哪呢?待会说。。。
            p1.join()     #join方法也很有意思,寻思了一下午,终于理解了。待会演示。
            p2.join()
            print "main process runned all lines..."

    执行结果:

    bubuko.com,布布扣

     

    上面提到了两个方法:run 和join

    run:如果在创建Process对象的时候不指定target,那么就会默认执行Process的run方法:

    #encoding:utf-8
    from multiprocessing import Process
    import os, time, random
    
    def r():
        print ‘run method‘
        
    if __name__ == "__main__":
            print "main process run..."
            #没有指定Process的targt
            p1 = Process()
            p2 = Process()
            #如果在创建Process时不指定target,那么执行时没有任何效果。因为默认的run方法是判断如果不指定target,那就什么都不做
            #所以这里手动改变了run方法
            p1.run = r
            p2.run = r
            
            p1.start()
            p2.start()
            p1.join()
            p2.join()
            print "main process runned all lines..."

    另:python源码里,Process.run方法:

    bubuko.com,布布扣

    执行结果:

    bubuko.com,布布扣

    可见如果在实例化Process不指定target,就会执行默认的run方法。

     

    还有一个join方法:

    最上面演示的代码中,在调用Process的start方法后,调用了两次join方法。这个join方法是干什么的呢?

    官方文档的意思是:阻塞当前进程,直到调用join方法的那个进程执行完,再继续执行当前进程。

     

    比如还是刚才的代码,只是把两个join注释掉了:

    #encoding:utf-8
    from multiprocessing import Process
    import os, time, random
    
    def r1(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
    def r2(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
    
    if __name__ == "__main__":
            print "main process run..."
            p1 = Process(target=r1, args=(‘process_name1‘, )) 
            p2 = Process(target=r2, args=(‘process_name2‘, )) 
    
            p1.start()
            p2.start()
            #p1.join()
            #p2.join()    
            print "main process runned all lines..."

    执行结果:

    bubuko.com,布布扣

     发现主进程不像之前那样,等待两个子进程执行完了,才继续执行。而是启动两个进程后立即向下执行。

     

    为了深刻理解,这次把p2的执行函数里面睡眠时间调大,让他多睡一会,然后保留p1的join,注释掉p2的join,效果更明显:

    #encoding:utf-8
    from multiprocessing import Process
    import os, time, random
    
    def r1(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
    def r2(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random()*2)
    
    if __name__ == "__main__":
            print "main process run..."
            p1 = Process(target=r1, args=(‘process_name1‘, )) 
            p2 = Process(target=r2, args=(‘process_name2‘, )) 
    
            p1.start()
            p2.start()
            p1.join()
            #p2.join()    
            print "main process runned all lines..."

    执行结果:

    bubuko.com,布布扣

    发现主线程只是等待p1完成了,就会向下执行,而不会等待p2是否完成。

     所以使用多进程的常规方法是,先依次调用start启动进程,再依次调用join要求主进程等待子进程的结束。

     

    然而为什么要先依次调用start再调用join,而不是start完了就调用join呢,如下:

    由:

    p1.start()
    p2.start()
    p1.join()

    改为:

    p1.start()
    p1.join()
    p2.start()

    执行效果:

    bubuko.com,布布扣

     发现是先执行完p1,再执行主线程,最后才开始p2。

    今天上午一直困惑这个事,现在终于明白了。join是用来阻塞当前线程的,p1.start()之后,p1就提示主线程,需要等待p1结束才向下执行,那主线程就乖乖的等着啦,自然没有执行p2.start()这一句啦,当然就变成了图示的效果了。

    展开全文
  • 这个没过,但从vamei的博客看到说也同样有局限性。 所以直接说主角吧 ---multiprocessing模块。 multiprocessing模块会在windows上时模拟fork的效果,可以实现跨平台,所以大多数都使用multiprocessing。 ...

    最近看了下多进程。

    一种接近底层的实现方法是使用 os.fork()方法,fork出子进程。但是这样做事有局限性的。比如windows的os模块里面没有 fork() 方法。

    另外还有一个模块:subprocess。这个没整过,但从vamei的博客里看到说也同样有局限性。

    所以直接说主角吧 --- multiprocessing模块。 multiprocessing模块会在windows上时模拟出fork的效果,可以实现跨平台,所以大多数都使用multiprocessing。

    下面给一段简单的代码,演示一下创建进程:

    #encoding:utf-8
    from multiprocessing import Process
    import os, time, random
    
    #线程启动后实际执行的代码块
    def r1(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
    def r2(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
        
    if __name__ == "__main__":
            print "main process run..."
            p1 = Process(target=r1, args=('process_name1', ))       #target:指定进程执行的函数,args:该函数的参数,需要使用tuple
            p2 = Process(target=r2, args=('process_name2', ))
            
            p1.start()    #通过调用start方法启动进程,跟线程差不多。
            p2.start()    #但run方法在哪呢?待会说。。。
            p1.join()     #join方法也很有意思,寻思了一下午,终于理解了。待会演示。
            p2.join()
            print "main process runned all lines..."

    上面提到了两个方法:run 和join

    run:如果在创建Process对象的时候不指定target,那么就会默认执行Process的run方法:

    #encoding:utf-8
    from multiprocessing import Process
    import os, time, random
    
    def r():
        print 'run method'
        
    if __name__ == "__main__":
            print "main process run..."
            #没有指定Process的targt
            p1 = Process()
            p2 = Process()
            #如果在创建Process时不指定target,那么执行时没有任何效果。因为默认的run方法是判断如果不指定target,那就什么都不做
            #所以这里手动改变了run方法
            p1.run = r
            p2.run = r
            
            p1.start()
            p2.start()
            p1.join()
            p2.join()
            print "main process runned all lines..."

    可见如果在实例化Process不指定target,就会执行默认的run方法。

     

    还有一个join方法:

    最上面演示的代码中,在调用Process的start方法后,调用了两次join方法。这个join方法是干什么的呢?

    官方文档的意思是:阻塞当前进程,直到调用join方法的那个进程执行完,再继续执行当前进程。

     

    比如还是刚才的代码,只是把两个join注释掉了:

    #encoding:utf-8
    from multiprocessing import Process
    import os, time, random
    
    def r1(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
    def r2(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
    
    if __name__ == "__main__":
            print "main process run..."
            p1 = Process(target=r1, args=('process_name1', )) 
            p2 = Process(target=r2, args=('process_name2', )) 
    
            p1.start()
            p2.start()
            #p1.join()        #p2.join()    
            print "main process runned all lines..."

    发现主进程不像之前那样,等待两个子进程执行完了,才继续执行。而是启动两个进程后立即向下执行。

     

    为了深刻理解,这次把p2的执行函数里面睡眠时间调大,让他多睡一会,然后保留p1的join,注释掉p2的join,效果更明显:

    #encoding:utf-8
    from multiprocessing import Process
    import os, time, random
    
    def r1(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random())
    def r2(process_name):
        for i in range(5):
            print process_name, os.getpid()     #打印出当前进程的id
            time.sleep(random.random()*2)
    
    if __name__ == "__main__":
            print "main process run..."
            p1 = Process(target=r1, args=('process_name1', )) 
            p2 = Process(target=r2, args=('process_name2', )) 
    
            p1.start()
            p2.start()
            p1.join()
            #p2.join()    
            print "main process runned all lines..."

    发现主线程只是等待p1完成了,就会向下执行,而不会等待p2是否完成。

     所以使用多进程的常规方法是,先依次调用start启动进程,再依次调用join要求主进程等待子进程的结束。

     

    然而为什么要先依次调用start再调用join,而不是start完了就调用join呢,如下:

    由:

    p1.start()
    p2.start()
    p1.join()

    改为:

    p1.start()
    p1.join()
    p2.start()

    发现是先执行完p1,再执行主线程,最后才开始p2。

    今天上午一直困惑这个事,现在终于明白了。join是用来阻塞当前线程的,p1.start()之后,p1就提示主线程,需要等待p1结束才向下执行,那主线程就乖乖的等着啦,自然没有执行p2.start()这一句啦,当然就变成了图示的效果了。

     

     

     

     

    展开全文
  • 了解Python基本知识1.编写一个程序,该程序接受三个数字并打印其总和。 每个数字都在单独的行中给。 2.编写一个程序,以读取底边的长度和直角三角形的高度并打印区域。 每个数字都在单独的行中给。 3.N个学生拿...
  • python学习 - 存钱问题

    2020-06-19 09:27:57
    假设银行存零取的年息为1.71%,请算父亲至少需要存入多少钱才行。 【问题分析】 这个问题是一个典型的递推问题,分析存钱和取钱的过程,我们可以采用逆推的方法。4年48个月,每月取1000元,最后一个月正好取完。...

    【问题描述】
    父亲准备为小龙的四年大学生活一次性储蓄一笔钱,使用整存零取的方式,控制小龙每月月初取1000元准备这个月使用。假设银行整存零取的年息为1.71%,请算出父亲至少需要存入多少钱才行。
    【问题分析】
    这个问题是一个典型的递推问题,分析存钱和取钱的过程,我们可以采用逆推的方法。4年48个月,每月取1000元,最后一个月正好取完。我们可以采用一个数组存放每个月剩余的钱数,那么最后一个月连本带息为1000,即第48个月数组里的值为1000。
    第47个月的存折里钱为:取走的1000元生活费+下个月1000月的本金,即:
    1000+第48个月的钱数/(1+0.00171/12)
    依次类推可以求出第46、45、……、第1个月的钱数:
    第46个月的存折里钱为:1000+第47个月的钱数/(1+0.00171/12)
    第45个月的存折里钱为:1000+第46个月的钱数/(1+0.00171/12)
    ……
    第1个月的存折里钱为:1000+第2个月的钱数/(1+0.00171/12)
    通过以上的递推就可以求出最初存款的钱数。

    s = 1000
    for i in range(48,0,-1):
        print(i,s)
        s = 1000 + s/(1+0.00171/12)
    print(s)
    
    展开全文
  • 心想着,我貌似也能用Python一波,话不多说,直接开搞。 2048的游戏规则: 2048游戏共有16个格子,初始时会有两个格子上安放了两个数字2,每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块...
  • 通过python 来爬取网站内所有的图片到本地 第三篇是动态获取参数构造图片地址实现下载图片 传送门:https://blog.csdn.net/qq_33958297/article/details/82316019 这篇文章的目的是因为上一个文章的地址已经...

    通过python 来爬取网站内所有的图片到本地  

    第三篇是动态获取参数构造图片地址实现下载图片  传送门:https://blog.csdn.net/qq_33958297/article/details/82316019

     

    这篇文章的目的是因为上一个文章里的地址已经无法访问了

    考虑到可能有的新手没有办法去实验,这里又出了一个新的。

    但是和那个网站的实现方式略微不同。

    前面大致是一样的只是后面整套图片获取的时候 需要一些步骤。

     

    爬取地址没了:官方又说这个是色情了。还是同样的下面是详细教程了

     

    一.获得图片地址 和 图片名称

     

    1.进入网址之后 按F12  打开开发人员工具点击elemnts

    https://img-blog.csdn.net/20180902122050752?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzOTU4Mjk3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

     

     2.点击下图的小箭头 选择主图中的任意一个图片   那我们这里点击第一个 图片

     

       3.显示控制台 为了验证xpath是否正确

    https://img-blog.csdn.net/20180902122050642?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzOTU4Mjk3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

     

        4.通过xpath获得a的href  和 title. (我看到好几个在问如何通过xpath获得a的href和title 把下面的图点开 不光有xpath语句,还有结果 )

     

    (请放大看)我们看到 他提示的是有24个 我们回到网站中看一下  在主页上数一下 他有32个 为什么我们拿到的是24个呢

    其实仔细看一下能看到里面有几个图片位是插入的广告 

    广告没有href 和data-origianl这两个属性

    也就是说 我们获得的href 和title是没有任何问题的 那么留着为我们后面使用.

     

        5.我们还需要访问这个链接的请求头的信息 以备后面操作的时候来使用

     

    这里可以看到 没有什么特别的请求头

     

    6.获得每套图里的 所有图片.这也是我们的目的所在 不然前面那么多工序不是浪费吗。

    但是我们进来之后发现 他只有一张图,需要点击下一页来获取剩下的图片。

    那么我们这里的思路很简单,首先获取图片的地址,同时获取最大的页码,这样我们通过循环就可以自己构造出来他的图片地址

    但是构造图片的话 我们需要知道他的规律  这样才可以保证我自己构造的地址不会有问题

    那么开始吧:

    第一张图

    第二张图

     最后一张图

     

    我们这里可以发现 他的图片地址很简单就是数字一直向后加就可以了。

     

    7.获取图片地址和页码

    上面是页码  下面是图片地址 

     

    8.获得相应的请求头  

     

    可以发现 需要注意的只有一个字段Referer 这里的地址就是我们访问这个页面进来的时候的那个地址 只要把那个地址给上就行了

    这里需要Referer的原因是 因为网站基本都有防盗链 而防盗链就是看这个值到底有没有 如果直接请求的话 会返回一些错误的东西 或者错误等问题

     

    那么至此 我们所有的东西都获得完成了下面开始写代码了

    这里的代码 和上一篇的代码大致是相同的

     

    9.对于404的处理 如果出现了404那就只有重新请求了

     

     

    二.编写python代码实现爬取.

        1.需要用到的库有: 

          Requests   lxml    如果没有安装的请自己安装一下

        2.IDE : vscode

        3.python 版本: 2.7.15

        4.代码实现的是多线程下载,多线程的好处 就不用我多说了。

    下载地址:https://download.csdn.net/download/qq_33958297/12195870

    效果图就不放 可能过于有点那啥 代码在python2平台下已经测试通过 在网站没有改变相关数据的情况下可以直接下载完所有的图片,建议下载代码的朋友先检查一下网站布局是否有变。

    展开全文
  • Python 递归查找json中的key的值

    万次阅读 2019-08-19 13:54:38
    项目很多时候需要找到一个层层嵌套的json里面某一个或者几个key的值,这时候就需要遍历一个json来获得这些值。 因此我封装了一个class,专门给大家来在一个json中递归查找需要的key的value, 下面给源码(复制到...
  • 使用python编写一个简易ATM机程序

    千次阅读 2019-05-30 14:50:19
    #介绍如下 # 功能函数有:登录,取款,存款,查询余额 ...# 2,密码输入正确后,显示银行卡的可用余额,输入...# 4,钱取了之后要自动计算银行卡的剩余金额。 # 5,密码初始化自己定义,可用余额自己定义 # 6,...
  • 前言 最近有很多的小白想学习人工智能,可是呢? 依旧用Python在学习。 我说大哥们,现在都什么年代了,还在把那个当宝一样拽着死死不放吗? 懂的人都在用Anaconda5.2.0,里面...气得到我脑壳都炸了,只能自己亲自...
  • 实际案例: 1.过滤掉列表 [3,9,-1,10,20,-2..]的...3.筛出集合 {77,89,32,20..}中能被3整出的元素 ---最通用方法,FOR循环迭代,加上if判断进行过滤 例如: 这样写的问题: 在Python里显得很啰嗦,效率也很差! ...
  • 题目描述 从上往下打印二叉树的每个节点,同层节点从左至右打印。...为了进行BFS,我们首先新建一个队列,将树根部的节点放到队列,然后弹,弹的同时将刚刚弹的Node下面的两个节点放到队列的后面,这样...
  • 本系统带文档lw1万字+答辩PPT+查重 如果这个题目不合适,可以去我上传的资源里面找题目,找不到的话,评论留下题目,或者站内私信我, ...整体设计,只是一个初步设计,而且,对于一个项目,我们可以进行多个
  • 500多条IP地址找对应地区复制粘贴到报告里整了一个上午。 为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本。 V2.0 写入到XLS中 2、使用方法 把IP写到.txt文件中就可以了,输出到D:\0utCode_ip_...
  • 数据集在csdn可以下载到,放在执行python的目录。 通过数据分析3类人,没有魅力的,有点魅力的,极具魅力的。 这里关键是给操作的步骤,忽略的细节请参考《机器学习实战》 step1: 首先是数据的获取,将...
  • 1.我安装pycham的时候选择Python编译器问题 2.后来在维修时发现我未创建独立的文件夹,代码在自带的Scratches (不懂的人起来真是,自己都觉得好笑 【后已重新创建单独File 具体恢复方法:在主页面File进入...
  • 选择设为星标回复1024获取Python资料作者:净些没用的原文链接:https://www.zhihu.com/question/350997893/answer/875003181前几天微信支付了点问题,今天在知乎看到了一个问题《假如有人把支付宝存储服务器炸...
  • 利用pyecharts的geo绘制流向图,发现由于终点距离太近,显得张图特别乱: 研究了好久怎么去掉线尾的箭头,最后在一篇博客找到了,在geo.add()中添加如下代码...太震撼了,我用Python全北京的公交线路动图 ...
  • 多进程

    2019-02-27 14:44:00
    python多进程的理解 multiprocessing Process join run 一种接近底层的实现方法是使用os.fork()方法,fork子进程。但是这样做事有局限性的。...这个没过,但从vamei的博客看到说也同样有局限性...
  • 电脑ubuntu16.04系统本来一直用的是caffe,出于好奇,试着装了下tensorflow,结果了些问题,然后按网上的方法东西,发现自己的python都用不了了,在pycharm里面出现如下错误: KeyError:“Couldn't find ...
  • 整出一个复杂的dic,里面不仅维度多,还含有numpy.array。超级复杂。过程中希望能够存储一下,万一服务器停了呢?万一断电了呢? 结果存好存,取出来可就不是那样了。网上搜索了很多的 python dic 文件 list json...
  • 最近在做一个文档分析系统,要求是在上传的两千份左右的office文件筛选含有一千个左右的关键词,因为以前主业开发PHP,但是PHP在处理这块的时候“力不从心”,好研究了小半年的Python,于是希望用Py和PHP混合...
  • 视频镜头分割

    千次阅读 2018-12-15 23:53:00
    最近学习视频和图像的处理,刚好要先将视频进行预处理。...里面把整个算法思路都说的很清楚,虽然没有具体的代码实现,这个不重要,思路比代码更重要,按照对应的思路,通过python了具体的实现代码...
  • 用paddle做ocr识别训练,每隔一段时间后的训练,会自动评估(eval)一次,之前都好好的,训练一晚都不会报错。 结果打美赛打了5天之后再弄,就出现了一些奇奇怪怪的错误。 问题重述: 问题简洁明了,发生在评估...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

python里整出

python 订阅