返回顶部
首页 > 资讯 > 后端开发 > Python >爬虫——线程进程
  • 684
分享到

爬虫——线程进程

爬虫线程进程 2023-01-30 22:01:04 684人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

使用 导入类库 import multiprocessing 创建进程 p1 = multiprocessing.Process(target=test1) Process参数:group=None,target=Non

使用

  • 导入类库
import multiprocessing
  • 创建进程
p1 = multiprocessing.Process(target=test1) 

Process参数:group=None,target=None, name=None, args=(), kwargs={})

  • 全局变量
import time, os
import multiprocessing

nums = [11, 22, 33]

def test():
    nums.append(44)
    print('在进程1中nums=%s' % str(nums),id(nums))
    time.sleep(3)

def test2():
    print('在进程2中nums=%s' % str(nums),id(nums))

def main():
    print('----in 主进程 pid=%d----父进程pid=%d----' % (os.getpid(), os.getppid()))
    p = multiprocessing.Process(target=test)
    p.start()

    p2 = multiprocessing.Process(target=test2)
    p2.start()
    # test()
    # test2()

if __name__ == '__main__':
    main()

进程间全局变量不共享,因为进程是复制出来的

使用

  • 导入类库
import threading
t1 = threading.Thread(target=test1,args=(1000000,))

Thread参数:group=None,target=None, name=None,args=(), kwargs=None, *, daemon=None

  • 全局变量
import time,threading

g_num = 0
mutex = threading.Lock()

def test1(num):
    global g_num
    # mutex.acquire()     
    for i in range(num):
        mutex.acquire()
        g_num += 1
        mutex.release()
    # mutex.release()
    print('-------in test1 g_num=%d-----' % g_num)

def test2(num):
    global g_num
    # mutex.acquire()     
    for i in range(num):
        mutex.acquire()
        g_num += 1
        mutex.release()
    # mutex.release()
    print('-------in test2 g_num=%d-----' % g_num)

def main():
    t1 = threading.Thread(target=test1,args=(1000000,))
    t2 = threading.Thread(target=test2,args=(1000000,))
    t1.start()
    t2.start()
    time.sleep(3)
    print('-------------in main Thread g_num = %d----' % g_num)

if __name__ == '__main__':
    main()

临界区,在同一时间只有一个程序进入代码块执行,一般括住改变的地方

如果其他线程调用acquire,当前线程则进入等待

threading.RLock() 递归 threading.Condition 信号量或条件锁

  • 生产者消费者模式

生产者消费者模式是线程间通信的一种应用

在使用数据结构的时候确定是否是线程安全,Queue本身是线程安全的,列表list([])、字典dic({})都不是线程安全的

def set_value(q):
    index = 0
    while True:
        q.put(index)
        index += 1
        q.put(index)
        index += 1
        time.sleep(2)

def get_value(q):
    while True:
        print('消费者获取数据:',q.get())   #若队列为空就sleep休眠,直到队列有数据

def main():
    q = Queue(4)
    t1 = threading.Thread(target=set_value,args=[q])
    t2 = threading.Thread(target=get_value,args=[q])
    t1.start()
    t2.start()

--结束END--

本文标题: 爬虫——线程进程

本文链接: https://www.lsjlt.com/news/179784.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 爬虫——线程进程
    使用 导入类库 import multiprocessing 创建进程 p1 = multiprocessing.Process(target=test1) Process参数:group=None,target=Non...
    99+
    2023-01-30
    爬虫 线程 进程
  • 爬虫学习之第四章爬虫进阶之多线程爬虫
    有些时候,比如下载图片,因为下载图片是一个耗时的操作。如果采用之前那种同步的方式下载。那效率肯会特别慢。这时候我们就可以考虑使用多线程的方式来下载图片。 多线程介绍: 多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率...
    99+
    2023-01-31
    爬虫 进阶 第四章
  • python爬虫入门八:多进程/多线程
    引用虫师的解释: 计算机程序只不过是磁盘中可执行的,二进制(或其它类型)的数据。它们只有在被读取到内存中,被操作系统调用的时候才开始它们的生命期。 进程(有时被称为重量级进程)是程序的一次执行。每个进程都有自己的地址空间,内存,数据栈...
    99+
    2023-01-30
    爬虫 多线程 入门
  • 多线程爬虫介绍
    一个进程里只有一个线程,我们称之为单线程爬虫。单线程爬虫每次只访问一个页面,不能充分利用电脑的网络带宽。一个页面最多也就几百KB,所以爬虫在爬取一个页面的时候,多出来的网速就浪费掉了。 而如果我们可以让爬虫同时访问10个页面,就相当于我们...
    99+
    2023-01-30
    爬虫 多线程
  • golang停止爬虫线程
    随着互联网的普及和数据量的增大,网络爬虫已经成为各种行业中不可或缺的一环。而Go作为一门高性能的编程语言,也成为越来越多爬虫项目中的首选语言。但是,在实际的开发中,我们往往需要对爬虫线程进行控制,比如在需要停止或重新启动爬虫时。本文将从Go...
    99+
    2023-05-14
  • Python 爬虫学习笔记之单线程爬虫
    介绍 本篇文章主要介绍如何爬取麦子学院的课程信息(本爬虫仍是单线程爬虫),在开始介绍之前,先来看看结果示意图 怎么样,是不是已经跃跃欲试了?首先让我们打开麦子学院的网址,然后找到麦子学院的全部课程信息,像...
    99+
    2022-06-04
    爬虫 单线程 学习笔记
  • Python 爬虫学习笔记之多线程爬虫
    XPath 的安装以及使用 1 . XPath 的介绍 刚学过正则表达式,用的正顺手,现在就把正则表达式替换掉,使用 XPath,有人表示这太坑爹了,早知道刚上来就学习 XPath 多省事 啊。其实我个人认...
    99+
    2022-06-04
    爬虫 之多 线程
  • Python多线程、异步+多进程爬虫实现代码
    安装Tornado 省事点可以直接用grequests库,下面用的是tornado的异步client。 异步用到了tornado,根据官方文档的例子修改得到一个简单的异步爬虫类。可以参考下最新的文档学习下。...
    99+
    2022-06-04
    爬虫 多线程 进程
  • Python+多线程+队列爬虫
    Python+多线程+队列,爬虫例子 # -*- coding: utf-8-*- import urllib2 import urllib import json import time import datetime import t...
    99+
    2023-01-31
    爬虫 队列 多线程
  • python爬虫中多线程和多进程的示例分析
    小编给大家分享一下python爬虫中多线程和多进程的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于...
    99+
    2023-06-14
  • python异步爬虫之多线程
    多线程,多进程(不建议使用)优点:可以为相关阻塞的操作单独开启线程或者进程,阻塞操作可以异步执行弊端:无法无限制开启多线程或多进程。原则:线程池处理的是阻塞且耗时的操作 单线爬虫示例...
    99+
    2024-04-02
  • Python多线程爬虫简单示例
    python是支持多线程的,主要是通过thread和threading这两个模块来实现的。thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用。 虽然...
    99+
    2022-06-04
    爬虫 示例 多线程
  • Python爬虫之线程池的使用
    目录一、前言二、同步代码演示三、异步,线程池代码四、同步爬虫爬取图片五、使用线程池的异步爬虫爬取4K美女图片一、前言 学到现在,我们可以说已经学习了爬虫的基础知识,如果没有那些奇奇怪...
    99+
    2024-04-02
  • thinkphp5.1怎么实现多线程爬虫
    这篇文章主要介绍了thinkphp5.1怎么实现多线程爬虫,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。创建一个cli命令php think make:c...
    99+
    2023-06-25
  • Python爬虫教程-01-爬虫介绍
    Python 爬虫的知识量不是特别大,但是需要不停和网页打交道,每个网页情况都有所差异,所以对应变能力有些要求 参考资料 精通Python爬虫框架Scrapy,人民邮电出版社 url, http web前端,html,css,...
    99+
    2023-01-30
    爬虫 教程 Python
  • Python 爬虫 多进程清洗代理
    1 import requests 2 from lxml import etree 3 import time 4 import multiprocessing 5 6 def get_all_proxy(queue)...
    99+
    2023-01-30
    爬虫 进程 Python
  • Python异步爬虫多线程与线程池示例详解
    目录背景异步爬虫方式多线程,多进程(不建议)线程池,进程池(适当使用)单线程+异步协程(推荐)多线程线程池背景 当对多个url发送请求时,只有请求完第一个url才会接着请求第二个ur...
    99+
    2024-04-02
  • Python怎么实现selenium多线程爬虫
    要在Python中实现Selenium多线程爬虫,你可以按照以下步骤进行操作: 导入必要的库: from selenium im...
    99+
    2023-10-24
    Python selenium
  • Python3多线程处理爬虫的实战
    多线程 到底什么是多线程?说起多线程我们首先从单线程来说。例如,我在这里看书,等这件事情干完,我就再去听音乐。对于这两件事情来说都是属于单线程,是一个完成了再接着完成下一个。但是我一...
    99+
    2023-03-02
    Python3多线程爬虫 Python 多线程爬虫
  • Python爬虫利用多线程爬取LOL高清壁纸
    目录页面分析抓取思路数据采集程序运行总结前言: 随着移动端的普及出现了很多的移动 APP,应用软件也随之流行起来。 最近又捡起来了英雄联盟手游,感觉还行,PC 端英雄联盟可谓是爆火的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作