我们可以把待处理的程序看成一批需要配送的包裹,包裹在不同的货架上摆放。单人整理会比几个人一起摆放要慢的多。同样在计算机处理中,单凭借一个程序打开运行是远远不够用的,我们需要同时处理多个事物,所以多线程就此产生了。今天小编就来带大家看看多线程是如何进行变量的。

线程是进程的执行单元,进程是系统分配资源的最小单位,所以在同一个进程中的多线程是共享资源的。import threading

import time

g_num = 100

def work1():

global g_num

for i in range(3):

g_num += 1

print("in work1 g_num is : %d" % g_num)

def work2():

global g_num

print("in work2 g_num is : %d" % g_num)

if __name__ == '__main__':

t1 = threading.Thread(target=work1)

t1.start()

time.sleep(1)

t2 = threading.Thread(target=work2)

t2.start()

----------------------------------

>>> in work1 g_num is : 103

>>> in work2 g_num is : 103

拓展:主线程等待子线程结束

为了让守护线程执行结束之后,主线程再结束,我们可以使用join方法,让主线程等待子线程执行。import threading

import time

def run(n):

print("task", n)

time.sleep(1)       #此时子线程停1s

print('3')

time.sleep(1)

print('2')

time.sleep(1)

print('1')

if __name__ == '__main__':

t = threading.Thread(target=run, args=("t1",))

t.setDaemon(True)   #把子进程设置为守护线程,必须在start()之前设置

t.start()

t.join() # 设置主线程等待子线程结束

print("end")

----------------------------------

>>> task t1

>>> 3

>>> 2

>>> 1

>>> end

今天的多线程内容只要掌握住代码方面就没有什么问题了,顺便小编说一下拓展的守护线程问题,防止有些人没弄明白。其实很简单,就是想要子线程结束后,主线程跟着结束,是不是这样就容易理解了~更多Python学习指路:PyThon学习网教学中心。

python3线程池爬虫_python3多线程爬虫中如何变量?相关推荐

  1. 线程学习基础(1):单线程爬虫和多线程爬虫的效率比照

    线程学习基础:单线程爬虫和多线程爬虫的效率比照 1. 并发线程的需求 2. 线程提速方法 3. 如何选择并发编程的三种方式 3.1 什么是CPU密集型计算.IO密集型计算? 3.1.1 CPU密集型( ...

  2. 详解线程池的作用及Java中如何使用线程池

    服务端应用程序(如数据库和 Web 服务器)需要处理来自客户端的高并发.耗时较短的请求任务,所以频繁的创建处理这些请求的所需要的线程就是一个非常消耗资源的操作.常规的方法是针对一个新的请求创建一个新线 ...

  3. 线程池参数详解_java中常见的六种线程池详解

    之前我们介绍了线程池的四种拒绝策略,了解了线程池参数的含义,那么今天我们来聊聊Java 中常见的几种线程池,以及在jdk7 加入的 ForkJoin 新型线程池 首先我们列出Java 中的六种线程池如 ...

  4. python3 多线程_Python3多线程爬虫实例讲解

    多线程概述 多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率.python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点, ...

  5. python3 scrapy爬虫_Python3 Scrapy爬虫框架(Scrapy/scrapy-redis)

    Python3 Scrapy爬虫框架(Scrapy/scrapy-redis) 本文由 Luzhuo 编写,转发请保留该信息. 原文: https://blog..net/Rozol/article/ ...

  6. c语言数据库线程池,C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0...

    typedef struct { }LoanInfos; typedef struct{ int cp;//主线程编号 int thread;//线程编号 long int time; int arr ...

  7. [Python3] 线程池的使用

    认知: 对于多线程的作用,简单点就是把一项重复的任务分给多个渠道一起完成,这样就大大提高工作效率. 目前大多数使用线程用的都是threading模块,这模块对于现在来说我认为已经落后了,就拿爬虫来说, ...

  8. 数据分析与爬虫实战视频——学习笔记(二)(千图网图片爬虫、fiddler抓包分析、腾讯视频评论爬虫、多线程爬虫(糗百))

    网址:[数据挖掘]2019年最新python3 数据分析与数据爬虫实战 https://www.bilibili.com/video/av22571713/?p=26 第三周第二节课 1抓包分析实战 ...

  9. python3 线程池 ThreadPoolExecutor 简介

    前言 从Python3.2开始,标准库为我们提供了 concurrent.futures 模块,它提供了 ThreadPoolExecutor (线程池)和ProcessPoolExecutor (进 ...

最新文章

  1. Yii在window下的安装方法
  2. Python处理JSON数据
  3. Win32 API之Setlocale函数配置地域化信息函数
  4. JS 04 Date_Math_String_Object
  5. visual studio code python插件下载_visual studio code 的必装推荐插件plugin, vscode, vsc
  6. Vue.js实训【基础理论(5天)+项目实战(5天)】博客汇总表【详细笔记】
  7. SQL Server 2008 R2——使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示...
  8. 论文笔记(Attentive Recurrent Social Recommendation)
  9. php+当前+日期+函数是,php时间日期的处理函数
  10. php家检乘除,php通用检测函数集(转)_php
  11. mysql悲观锁和乐观使用实例_MySQL 悲观锁和乐观锁
  12. 知了课堂Day1——微信小程序基础01-template、事件
  13. system函数的详细使用
  14. 三级联动的数据库(贼多)
  15. Unix/Linux编程:Internet domain socket
  16. 群晖硬盘已损毁 Linux 修复,群晖NAS提示空间损毁修复纪实 | Yeboyzq Blog
  17. 汇编语言与接口技术——期末设计
  18. Android本地数据搜索实现
  19. 陕西宝鸡发现桃花水母 (组图)
  20. Python_OpenCV_实现模糊集合用于图像增强(对比度提升,空间滤波)

热门文章

  1. git 添加公钥的命令
  2. swift 计算label的行数方法
  3. linux下Oracle11g RAC搭建(六)
  4. JavaScript Array对象 知识点总结
  5. 【 D3.js 入门系列 --- 4 】 怎样使用scale(比例)
  6. redis用zset做延时消息
  7. tcp协议和三次握手
  8. ref:PHP反序列化漏洞成因及漏洞挖掘技巧与案例
  9. 无刷电机反电动势过零检测
  10. (转)git 忽略规则