最近博主手上有一个爬虫项目,开始深入研究python爬虫开发,这是我篇博客也相当于是我的学习笔记,我认为学习爬虫第一步,先学习python多线程与多进程,熟悉网络编程,接下来会陆续以博客的方式跟大家做分享。多进程Python实现多进程的方式主要有两种,一种方法是使用os模块中的fork方法,另一种方法是使用multiprocessing模块。这两种方法的区别在于前者仅适用于Unix/Linux操作系统,对Windows不支持,后者则是跨平台的实现方式,目前
系统 2019-09-27 17:53:30 2197
概述如今我也是使用Python写代码好多年了,但是我却很少关心GIL的内部机制,导致在写Python多线程程序的时候。今天我们就来看看CPython的源代码,探索一下GIL的源码,了解为什么Python里要存在这个GIL,过程中我会给出一些示例来帮助大家更好的理解GIL。GIL概览有如下代码:staticPyThread_type_lockinterpreter_lock=0;/*ThisistheGIL*/这行代码位于Python2.7源码ceval.c
系统 2019-09-27 17:52:39 2197
工厂模式,类似实际的制造车间中,根据订单的需求来生成/创建某个实例。1.应用场景:需要创建的实例不确定,由输入的数据决定;2.实现方法:实现一个独立的类,接收传入的需要创建实例的名称,在该类中实现创建某个具体实例。3.代码:#coding:utf-8classPerson(object):def__init__(self):self.name=Noneself.gender=NonedefgetName(self):returnself.namedefge
系统 2019-09-27 17:52:30 2197
本文实例讲述了Python闭包和装饰器用法。分享给大家供大家参考,具体如下:Python的装饰器的英文名叫Decorator,作用是完成对一些模块的修饰。所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能)侵入到原有的模块中的代码里去。闭包1.函数引用#coding=utf-8deftest1():print('Thisistest1!')#调用函数test1()#引用函数ret=test
系统 2019-09-27 17:52:24 2197
3.4.5断言断言(assertions)的使用方式类似于if语句,只是在不满足条件时,会直接抛出异常。类似于下面的if语句(伪代码)ifnotcondition:#如果不满足条件,会直接抛出异常,程序会中断crashprogram那么究竟为什么需要这样的代码呢?主要原因为需要检测程序在某个地方是否满足条件,如果不满足条件,应该及时通知开发人员,而不是将这些bug隐藏起来,知道关键的时候在崩溃。其实在TDD中经常使用断言,TDD会在程序发现异常时执行断言,
系统 2019-09-27 17:52:20 2197
一、安装MySQL-python复制代码代码如下:#yuminstall-yMySQL-python二、打开数据库连接复制代码代码如下:#!/usr/bin/pythonimportMySQLdbconn=MySQLdb.connect(user='root',passwd='admin',host='127.0.0.1')conn.select_db('test')cur=conn.cursor()三、操作数据库复制代码代码如下:definsertdb(
系统 2019-09-27 17:52:20 2197
Python的字符串的特点Python与C语言,Java语言都不一样,没有单个字符,只有一个有一个字符的字符串。字符串对象不可修改,属于不可变类型字符串和列表,元组都从属于序列这个对象类别。所以序列支持的操作,字符串也支持。用单引号和双引号表示都行,并列的字符串串常量会自动合并,不需要显式的用加号表示。单双引号里面的特殊字符必须用转义序列表示,比如”,',\都需要在前面加个、,但是在三引号里面不需要转义。Python的字符串的支持的基本操作支持序列的操作,
系统 2019-09-27 17:52:13 2197
简介这篇博文和分类看似没有多大关系,但是也是从上一篇衍生出来的产物,因为涉及到FQ工具Lantern,就算是给关注和支持的小伙伴们拓展一下眼界和知识面。而且好多人都阅读了上一篇没发现那个参考博客点不开吗?那是因为还没来的急,整理和编写,今天再试一下就可以。一个软件可能占用多个端口拥有多个目标IP,下面以FQ工具Lantern为例,说明端口查看方法:1.借助第三方软件查看如果你电脑上安装了360等优化工具,可能会自带查看网络状况的插件如下图:2.命令行窗口查
系统 2019-09-27 17:51:27 2197
目录Python并发编程03/僵尸孤儿进程,互斥锁,进程之间的通信1.昨日回顾2.僵尸进程和孤儿进程2.1僵尸进程2.2孤儿进程2.3僵尸进程如何解决?3.互斥锁,锁3.1互斥锁的应用3.2Lock与join的区别4.进程之间的通信进程在内存级别是隔离的4.1基于文件通信(抢票系统)4.2基于队列通信Python并发编程03/僵尸孤儿进程,互斥锁,进程之间的通信1.昨日回顾1.创建进程的两种方式:函数,类.2.pid:os.getpid()os.getpp
系统 2019-09-27 17:50:57 2197
生成器就是自己用python代码写的迭代器,生成器的本质就是迭代器。通过以下两种方式构建一个生成器:1、通过生成器函数2、生成器表达式生成器函数:函数deffunc1(x):x+=1returnxprint(func1(5))生成器函数deffunc1(x):x+=1yieldxg_obj=func1(5)print(g_obj.__next__())一个next对应一个yield。yieldVSreturnreturn结束函数,给函数的执行者返回值yie
系统 2019-09-27 17:50:36 2197