多线程的应用场景 不适用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. 数组的高级应用含ES6 for of 用法

    // 在ES5中常用的10种数组遍历方法: // 1. 原始的for循环语句 // 2. Array.prototype.forEach数组对象内置方法 // 3. Array.prototype.m ...

  2. python接口测试之excel的操作

    1 用到的第三方库openpyxl,需要在命令窗口中下载安装pip install openpyxl,主要对xlsx格式的excel进行读取和编辑: xlrd库从excel中读取数据,支持xlsx x ...

  3. centos8上安装openresty

    一,openresty的官网地址: http://openresty.org/ 说明:说一下openresty的安装方式: 从openresty的安装目录下,可以看到openresty编译安装了自己作 ...

  4. 使用Sparse Checkout 排除跟踪Git仓库中指定的目录或文件

    应用场景 在一个大工程里包含由不同部门开发的模块时,项目的Git仓库肯定很大,造成每次Git操作相对比较耗时.因为开发人员一般只关心他们部门的模块的代码,所以完全可以排除一些他完全不需要用到的目录.这 ...

  5. salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.216.0.apexcode.meta/apexcode/apex_classes_ke ...

  6. IDEA2020.2版本无法开启KDE全局菜单的解决方案

    IDEA2020.2版本无法开启KDE全局菜单的解决方案 前言 :更新了2020.2之后全局菜单一直不生效,一直找不到解决的办法,就退回了2020.1,今天又试了一次,成功解决全局菜单显示问题. 之前 ...

  7. net core 微服务框架 Viper 调用链路追踪

    1.Viper是什么? Viper 是.NET平台下的Anno微服务框架的一个示例项目.入门简单.安全.稳定.高可用.全平台可监控.底层通讯可以随意切换thrift grpc. 自带服务发现.调用链追 ...

  8. 用一道模板题理解多源广度优先搜索(bfs)

    题目: //多元广度优先搜索(bfs)模板题详细注释题解(c++)class Solution { int cnt; //新鲜橘子个数 int dis[10][10]; //距离 int dir_x[ ...

  9. Pytorch加载并可视化FashionMNIST指定层(Udacity)

    加载并可视化FashionMNIST 在这个notebook中,我们要加载并查看 Fashion-MNIST 数据库中的图像. 任何分类问题的第一步,都是查看你正在使用的数据集.这样你可以了解有关图像 ...

  10. PostgreSQL 报错 Problem running post-install step.Installation may not complete correctlyThe database cluster initialisation failed.

    在点击完next后安装进度条到最后会弹出题目这个错误 之前选择locale选择china/Singapore 或者china/hongkong都会报错 我的解决方案是 不选择,使用默认的就不会报错,并 ...