多线程的应用场景 不适用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. localStorage使用小结

    一.什么是localStorage.sessionStorage 在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题 ...

  2. 【原创】xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(一)--实时端socket创建流程

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 1.概述 上篇文章xenomai内核解析--实时IP ...

  3. go ioutial 读取写入文件

    package main import ( "fmt" "io/ioutil" "os" ) func main() { // 读取文件 / ...

  4. selenium基础--环境搭建

    下载地址 Chrome点击下载chrome的webdriver: http://chromedriver.storage.googleapis.com/index.html不同的Chrome的版本对应 ...

  5. RocketMQ单节点搭建

    RocketMQ服务搭建 下载RocketMQ源码: http://mirror.bit.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-source- ...

  6. 这是2020年最强Python学习路线,从入门到精通!

    给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.全民学Python的话题铺天盖地,中国的Py ...

  7. *新阿里镜像maven配置流程

    解决idea中maven仓库下载jar包慢的问题 配置阿里镜像 设置idea 配置阿里镜像参考链接:https://blog.csdn.net/redhat0921/article/details/1 ...

  8. 安装 WSL2、Ubuntu 及 docker(详细步骤)

    本文链接:https://www.cnblogs.com/tujia/p/13438639.html 一.更新Windows版本 WSL 2 随着 Windows build 19041 而推出,能更 ...

  9. Jetson AGX Xavier ROS下调用USB单目摄像头

    Jetson AGX Xavier安装的ROS是Melodic版本的,所以部署的时候用到的包都是Melodic的. 1. 查看USB摄像头 摄像头连接Xavier设备,调用命令查看. ls /dev/ ...

  10. 字符串截取 slice,substr,substring 的区别

    一 只传递一个参数时候 let str = '0123456'; str.slice(5); //'56' str.substr(5); // '56' str.substring(5); // '5 ...