多线程的应用场景 不适用cpu操作密集型任务, 适合io操作密集型任务

同一进程中的数据是互通的,因为python多线程是假多线程,我们要用到多核就需要开多个进程来实现,但是坏处是数据不能互通

线程:是操作系统最小的调度单位,是一串指令的集合

进程:eg:QQ要以一个整体的形式暴露给操作系统管理,里面包含对各种资源的调用,内存对各种资源管理的集合叫做进程

进程操作cpu必须先创建一个线程,只有线程才能操作cpu

所一在同一进程中的线程是共享同一片内存空间的,但是两个线程不能在同一块空间里运作

主线程和子线程运行是并行的

import threading
import time
def run(name):
print('in the %s' % name)
time.sleep(2)

首先我们设置一个函数我们开启两个线程

t2 = threading.Thread(target=run,args=('t2',))
t1 = threading.Thread(target=run,args=('t1',))
t1.start()
t2.start()

你就会看到 并行的结果了,可是出现了一个问题 我们向要在进程结束后使用其结果该怎么办呢?

我们可以使用join哦

star_time = time.time()

r_obj = []
for i in range(50):
t = threading.Thread(target=run, args=('t %s' % i, ))
t.setDaemon(True) # 把子线程设置成守护线程
t.start() r_obj.append(t)
for i in r_obj:
i.join()

可以看到我们把每一个进程丢进了数组,来是他们结束那么后面我们就可以达到效果了

顺便提一下我们还有一个使用类的方法来开多进程哦

# class Mythraed(threading.Thread):
# def __init__(self,name):
# super(Mythraed, self).__init__()
# self.name = name
#
# def run(self):
# print('run the %s',self.name)
# time.sleep(2) # t1 = Mythraed('t1')
# t2 = Mythraed('t2')
# t1.start()
# t2.start()

注意 python的线程是调用操作系统的源生线程,python在一时间内只能在一核中运行

如果你是2.x记得加锁哦不然会出现差错

local = threading.local()  # 加锁首先生成实例
def run(name):
global num
local.acquire() # 上锁
num += 1
local.release() # 解锁
print('in the %s' % name)

2.进程(multiprocessing)

同理进程也和线程一样的开启方式,也是start一下 也可以join

    for i in range(10):
p = multiprocessing.Process(target=run, args=('liu%s' % i,))
p.start()

需要注意的是,每个进程都有一个父进程衍生出来,所以 查看进程的pid可以用os来查看,

如果你用pycharm写了一个程序那么这个程序的父亲进程pid就是pychram在电脑中的pid

查看父亲进程用

os.getppid()

查看当前进程的pid用

os.getpid()

python之《线程与进程》的更多相关文章

  1. Python利用pandas处理Excel数据的应用

    Python利用pandas处理Excel数据的应用   最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...

  2. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  3. 基于 Python 和 Pandas 的数据分析(4) --- 建立数据集

    这一节我想对使用 Python 和 Pandas 的数据分析做一些扩展. 假设我们是亿万富翁, 我们会想要多元化地进行投资, 比如股票, 分红, 金融市场等, 那么现在我们要聚焦房地产市场, 做一些这 ...

  4. 基于 Python 和 Pandas 的数据分析(2) --- Pandas 基础

    在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数 ...

  5. 基于 Python 和 Pandas 的数据分析(1)

    基于 Python 和 Pandas 的数据分析(1) Pandas 是 Python 的一个模块(module), 我们将用 Python 完成接下来的数据分析的学习. Pandas 模块是一个高性 ...

  6. python安装pandas和lxml

    一.安装python 二.安装pip 三.安装mysql-connector(window版):下载mysql-connector-python-2.1.3,解压后进入目录,命令安装:pip inst ...

  7. python之pandas用法大全

    python之pandas用法大全 更新时间:2018年03月13日 15:02:28 投稿:wdc 我要评论 本文讲解了python的pandas基本用法,大家可以参考下 一.生成数据表1.首先导入 ...

  8. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  9. Python数据分析--Pandas知识点(二)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表 ...

  10. Python之Pandas中Series、DataFrame

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

随机推荐

  1. 【最短路】HDU 1688 Sightseeing

    题目大意 给出一个有向图(可能存在重边),求从\(S\)到\(F\)最短路的条数,如果次短路的长度仅比最短路的长度多1,那么再加上次短路的条数. 输入格式 第一行是数据组数\(T\). 对于魅族数据, ...

  2. linux学习(一)--启动文件bootsect.s

     这是linux由BIOS加载后执行的第一段的启动程序代码,即文件 boot/bootsect.s  首先附图,简单介绍一下从开机加电到第一段linux代码执行的简要过程 1 .globl begte ...

  3. xshell多窗口同时执行输入命令

  4. php-ffmpeg 操作视频/音频文件

    php-ffmpeg 是一个php操作视频/音频文件的类库. GitHub地址:https://github.com/PHP-FFMpeg/PHP-FFMpeg/ 使用composer快速安装:com ...

  5. Solr6.4.2异常:org.apache.solr.common.SolrException: Error opening new searcher

    版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明. 原文链接:https://www.cnblogs.com/chenghu/p/13840021.html Solr版本6.4.2 启动S ...

  6. 痞子衡嵌入式:MCUBootUtility v2.4发布,轻松更换Flashloader文件

    -- 痞子衡维护的NXP-MCUBootUtility工具距离上一个版本(v2.3.1)发布过去2个月了,这一次痞子衡为大家带来了版本升级v2.4.0,这个版本主要有一个非常重要的更新需要跟大家特别说 ...

  7. Spring之AOP(面向切面编程)_入门Demo

    AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程.AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可 ...

  8. 数位dp(贴一个模板=。=)

    emmmm,之前看到大佬的博客感觉这个模板挺有用的,就贴了一个= = 然后解释什么的都有了就...... 数位dp一般应用于: 求出在给定区间[A,B]内,符合条件P(i)的数i的个数. 条件P(i) ...

  9. Tomcat8升级后URL中特殊字符报错出现原因

    请求带上花括号等字符,请求无法送达服务端,报错: Failed to load resource: the server responded with a status of 400 () https ...

  10. 痞子衡嵌入式:基于恩智浦i.MXRT1010的MP3音乐播放器(RT-Mp3Player)设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是基于i.MXRT1011的MP3播放器参考设计. i.MXRT1011是恩智浦i.MXRT四位数系列的入门型号,虽然是入门级,可也是50 ...