python 线程 threading模块

# 进程 : 数据隔离,资源分配的最小单位,可以利用多核,操作系统调度,数据不安全,开启关闭切换时间开销大    # multiprocessing 如何开启进程 start join    # 进程有数据不安全的问题 Lock (抢票的例子)    # 进程之间可以通信ipc:        # 队列(安全) 管道(不安全)            # 生产者消费者模型        # 第三方工具    # 进程之间可以通过Manager类实现数据共享(不需要会写代码)    # 一般情况下我们开启的进程数不会超过cpu个数的两倍# 线程(80%)    # 什么是线程 :能被操作系统调度(给CPU执行)的最小单位    # 同一个进程中的多个线程同时被CPU执行??? 可能    # 数据共享,操作系统调度的最小单位,可以利用多核,操作系统调度,数据不安全,开启关闭切换时间开销小

# 在CPython中的多线程 - 节省io操作的时间    # gc 垃圾回收机制 线程        # 引用计数 +分代回收    # 全局解释器锁的出现主要是为了完成gc的回收机制,对不同线程的引用计数的变化记录的更加精准    # 全局解释器锁 GIL(global interpreter lock)        # 导致了同一个进程中的多个线程只能有一个线程真正被cpu执行    # 节省的是io操作的时间,而不是cpu计算的时间,因为cpu的计算速度非常快,大部分情况下,我们没有办法把一条进程中所有的io操作都规避掉
# import os# import time# from threading import Thread,current_thread,enumerate,active_count# # from multiprocessing import Process as Thread# def func(i):#     print(‘start%s‘%i,current_thread().ident)#     time.sleep(1)#     print(‘end%s‘%i)# if __name__ == ‘__main__‘:#     tl = []#     for i in range(10):#         t = Thread(target=func,args=(i,))#         t.start()#         print(t.ident,os.getpid())#         tl.append(t)#     print(enumerate(),active_count())#     for t in tl:t.join()#     print(‘所有的线程都执行完了‘)

# current_thread() 获取当前所在的线程的对象 current_thread().ident通过ident可以获取线程id# 线程是不能从外部terminate# 所有的子线程只能是自己执行完代码之后就关闭# enumerate 列表 存储了所有活着的线程对象,包括主线程# active_count 数字 存储了所有活着的线程个数

# 面向对象的方式起线程# from threading import Thread# class MyThread(Thread):#     def __init__(self,a,b):#         self.a = a#         self.b = b#         super().__init__()##     def run(self):#         print(self.ident)## t = MyThread(1,2)# t.start()  # 开启线程 才在线程中执行run方法# print(t.ident)

# 线程之间的数据的共享# from threading import Thread# n = 100## def func():#     global n#     n -= 1## t_l = []# for i in range(100):#     t = Thread(target=func)#     t.start()#     t_l.append(t)# for t in t_l:#     t.join()# print(n)

原文地址:https://www.cnblogs.com/shaohuagu/p/12283514.html

时间: 2024-10-07 01:02:30

python 线程 threading模块的相关文章

Python 多线程threading模块

首先,我们在了解多线程时需要理解的就是什么是多线程,按照官方的解释就是:多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术. 在我自学到这里的时候,通过会在想进程和线程到底是有什么区别,我的理解就是: 进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,一个进程可以包含多个线程. 下面就以简单的例子来加强我们对python 线程的理解. 默认情况下,我们在没有启动线程的时候,可以看一下程序总的运行时间,应该是每个函数

python中threading模块详解(一)

python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thread模块更高层的API来提供线程的并发性.这些线程并发运行并共享内存. 下面来看threading模块的具体用法: 一.Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行. 这里对使用多线程并发,和不适用多线程并发做

python 的threading模块

其中Thread类 是你主要的线程类,可以创建进程实例.该类提供的函数包括: getName(self) 返回线程的名字 isAlive(self) 布尔标志,表示这个线程是否还在运行中 isDaemon(self) 返回线程的daemon标志,将线程放入后台执行 join(self, timeout=None) 程序挂起,直到线程结束,如果给出timeout,则最多阻塞timeout秒,主线程需等待子线程完成 run(self) 定义线程的功能函数 setDaemon(self, daemon

Python 线程(threading) 进程(multiprocessing)

*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD

python之threading模块简单讲解和实例演示

import threading 在处理一些程序时为了节约时间,可以使用多线程的方式, 让其并发去执行,从而节约时间, (注意python其实是伪多线程,其实是以我们感觉不到的速度每行代码都按照相同时间执行) Lock 当多线程同时对一个变量进行修改操作的时候,那么可能会出现混乱, 因为其是并发(算是吧)而行, (所以当两个赋值时间相对接近时那么其容易出现混乱) 所以我们得创建锁, 让其上一个线程赋值结束, 下一个赋值再继续 threading.Lock() 创建锁 是可用的最低级的同步指令.

再看python多线程------threading模块

现在把关于多线程的能想到的需要注意的点记录一下: 关于threading模块: 1.关于 传参问题 如果调用的子线程函数需要传参,要在参数后面加一个","否则会抛参数异常的错误. 如下: 1 for i in xrange(5): 2 threads.append(threading.Thread(target=worker,args=(i,))) 2.关于join()阻塞 join()方法一旦被调用,这个线程就会被阻塞住,等其他线程执行完才执行自身.当我们在主线程A中,创建了n个子线

python多线程-threading模块

threading 是我们常用的用于 python 多线程的模块,其功能更加丰富.下面我们就来开始学习这个模块. 同样的,我这里声明一样我使用的版本是 python2.7,不同版本直接可能存在差异. 老规矩,使用 help() 函数获取帮助文档,看看里面有什么内容. threading 模块中提供了一个 thread 的类,注意不要和 thread 模块搞混了,两者差别还是很大的.thread 这个类可以实例化一个对象,每个对象代表一个线程,可以调用其中的 run() 方法来开启一个线程的运行.

Python之threading模块简单使用

下面的代码来自<Python核心编程>(第二版)一书. threading模块对象 说明 Thread 表示一个线程的执行的对象 Lock 锁原语对象(跟thread模块里的锁原语对象相同) RLock 可重入锁对象.使单线程可以再次获得已经获得了的锁(递归锁定) Condition 条件变量对象能让一个线程停下来,等待其他线程满足了某个"条件".如,状态的改变或值得改变 Event 通用的条件变量,多个线程可以等待某个事件的发生,在事件发生后,所有的线程都会被激活 Sem

进程 线程 threading模块

# 进程:本质上就是一个程序在一个数据集上的一次动态执行过程(抽象的概念) # 进程一般由程序.数据集(程序运行过程中所需要使用的资源).进程控制块(记录进程的外部特征,描述进程的执行变化过程)三部分组成 # 进程是最小的资源单位 # 线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干一样事的缺陷,使到进程内并发成为可能# 线程:是最小的执行单位 # 进程与线程的联系与区别 # 1.一个程序至少有一个进程,一个进程至少有一个线程 (进程可以理解成线程的容器) # 2.进