Python第四周之多线程和多进程

# 多线程和多进程

  进程:操作系统分配内存的基本单位,进程之间的通信相互隔离,如果要相互交换数据,需要特殊的机制。

  线程:一个进程由至少一个线程组成,线程是进程的执行单元,也是操作系统分配CPU的基本单元。

多线程,是为了多的被CPU所启动。

  优点:

  1.缩短程序的执行时间,提升性能

  2.改善用户的体验。

进程

调用方法一: 直接调用 。

  直接创建对象Process,并通过target参数指定线程启动后要执行的任务


from multiprocessing import Process

count = 0

def running(string):    global count    inner = 0    while count < 100:        print(string, end=‘‘, flush=True)        count += 1        inner += 1    print(‘%s打印了%s次‘ % (string, inner))

def main():    t1 = Process(target=running, args=(‘??‘,))    t1.start()    t2 = Process(target=running, args=(‘哼‘,))    t2.start()

if __name__ == ‘__main__‘:    main()
 

调用方法二: 定义类来调用 -- 间接(推荐)

  继承Process自定义线程,通过重写run 方法来指定线程启动后执行的任务

from multiprocessing import Process

class Patten(Process):

    def __init__(self, string, count):
        self._string = string
        self._count = count
        super(Patten, self).__init__()

    @property
    def count(self):
        return self._count

    def run(self):
        for _ in range(self._count):
            print(self._string, end=‘‘, flush=True)

def main():
    patten = Patten(‘??‘, 10000)
    patten2 = Patten(‘??‘, 10000)
    patten3 = Patten(‘??‘, 10000)
    patten4 = Patten(‘ヾ(?ω?`)o‘, 10000)
    patten5 = Patten(‘??‘, 10000)
    total = patten.count + patten2.count + patten3.count + patten4.count + patten5.count
    print(total)

if __name__ == ‘__main__‘:
    main()

线程

使用方法同进程,只需要把对象换位Thread 就行。和进程的区别如下:

  进程是单独执行,数据不共享,线程是数据共享执行。

原文地址:https://www.cnblogs.com/zl666/p/8611505.html

时间: 2024-10-11 07:13:56

Python第四周之多线程和多进程的相关文章

Python第四周之多线程和多进程之线程加锁、五车争霸赛

# Information Technology# 摩尔定律 -- 任何买不起的电子产品,在18月后价格会降低一半,甚至更多.# 原因:电子产品每隔18个月,性能会翻翻.# 安迪比尔定律:安迪给你的东西,比尔都会给你拿走.硬件性能起来了,但是软件跟不上.# 所以:当软件更新时,硬件的性能需求将会提升.# 反摩尔定律:一个IT公司如果今天和18个月前卖掉同样多的.同样的产品,它的营业额就要降一半.IT界把它称为反摩尔定律. # 线程加锁import time from threading impo

在python中单线程,多线程,多进程对CPU的利用率实测以及GIL原理分析

首先关于在python中单线程,多线程,多进程对cpu的利用率实测如下: 单线程,多线程,多进程测试代码使用死循环. 1)单线程: 2)多线程: 3)多进程: 查看cpu使用效率: 开始观察分别执行时候cpu的使用效率: 1)单线程执行的时候: 2)多线程执行的时候: 3)多进程执行的时候: 总结: 1)单进程单线程时,对于双核CPU的利用率只能利用一个核,没有充分利用两个核. 2)单进程多线程时,对于双核CPU的来说,虽然两个核都用到的,不过很明显没有充分利用两个核,这里要说一个GIL(全局解

python并行处理任务时 该用多进程?还是该用多线程?

在python并行处理任务时要使用多线程还是多进程? 说到这个话题,必须要提的GIL( Global Interpreter Lock)全局解释锁,当Cpython每次执行字节码时都要先申请这个锁.那么问题就来了,如果使用多线程是比也会受到影响. 多线程和多进程程序比较,哪个性能更高?还是拿一个实例运行来看看吧- #写一个简单的例子,计算100W个随机数的和8次,同时将分散到8个线程进行运算. #thread.py #!/usr/bin/env python import random impo

Python多线程和多进程谁更快?

python多进程和多线程谁更快 python3.6 threading和multiprocessing 四核+三星250G-850-SSD 自从用多进程和多线程进行编程,一致没搞懂到底谁更快.网上很多都说python多进程更快,因为GIL(全局解释器锁).但是我在写代码的时候,测试时间却是多线程更快,所以这到底是怎么回事?最近再做分词工作,原来的代码速度太慢,想提速,所以来探求一下有效方法(文末有代码和效果图) 这里先来一张程序的结果图,说明线程和进程谁更快 一些定义 并行是指两个或者多个事件

Python的多线程和多进程模块对比测试

本文主要对比测试Python的多线程和多进程模块在CPU类型和I/O的任务操作时的效率 一 测试CPU消耗类型任务 在一台多核CPU的服务器上执行多线程代码,理论上代码执行时会利用多余的CPU核心来提升性能.但是由于Python的GIL的存在,使用多线程来执行CPU繁重的任务,未必能得到性能提升.但是GIL又必不可少,因为在Python解释器中执行线程是不安全的,也就是说为了保证Python线程执行时的安全,Python提供了一个全局锁,同一时刻,只允许一个线程获得这个全解锁并执行. CPU消耗

Python的多线程与多进程实践

最近要产生大量的”假“的电话号码,所以就写了一个自动产生电话号码程序,产生了一百万条数据,然后把数据放到一个文件中. 死跑版: # -*- coding: utf-8 -*- # 以下是中国的手机号码分段情况 # 新联通 (中国联通+中国网通)手机号码开头数字 130.131.132.145. # 155.156.185.186 # 新移动 (中国移动+中国铁通)手机号码开头数字 134.135.136.137. # 138.139.147.150.151.152.157.158.159.182

python多线程、多进程、协程的使用

本文主要介绍多线程.多进程.协程的最常见使用,每个的详细说明与介绍有时间会在以后的随笔中体现. 一.多线程 1.python通过两个标准库thread和threading提供对线程的支持.thread提供了低级别的.原始的线程以及一个简单的锁.threading通过对thread模块进行二次封装,提供了更方便的API来操作线程.接下来只介绍threading的常见用法. 2.使用 import threading import time def Traversal_5(interval): fo

python 多线程、多进程

一.首先说下多线程.多进程用途及异同点,另外还涉及到队列的,memcache.redis的操作等: 1.在python中,如果一个程序是IO密集的操作,使用多线程:运算密集的操作使用多进程. 但是,其实在python中,只支持一个cpu的多线程,多个任务是切换执行的,并不能并行执行,所以有的时候,多线程并不比单线程要快,在我们的理解中,下意识的就会认为 多线程肯定比单线程要快,其实不然,多线程只会在有线程阻塞的情况下才会起到效果,下面我们来看一个实例: 1 import os,sys,json

python 多线程和多进程

多线程与多进程 知识预览 一 进程与线程的概念 二 threading模块 三 multiprocessing模块 四 协程 五 IO模型 回到顶部 一 进程与线程的概念 1.1 进程 考虑一个场景:浏览器,网易云音乐以及notepad++ 三个软件只能顺序执行是怎样一种场景呢?另外,假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作),而此时CPU只能静静地等待任务A读取完数据才能继续执行,这样就白白浪费了CPU资源.你是不是已经想到在程序A读取数据的过程中,