1、Threading模块提供的类
Thread,Lock,Rlock,Condition,Semaphore,Event,Timer,local
2、threading模块提供的常用的方法
(1)threading.currentThread(): 返回当前的线程变量。
(2)threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
(3)threading.activeCount():返回正在运行的线程数量,与len(threading.enumerate())有相同的结果
 
一、Thread 线程类
1、t1=threading.Thread(target=,name=,args=,kwargs=)
参数说明:
•group:线程组,目前还没有实现,库引用中提示必须是None;
•target:要执行的方法;
•name:线程名;
•args/kwargs:要传入方法的参数。
 
import threading
import time
def func1(a=None,b=None):
print a,b
time.sleep(1)
 
t1=threading.Thread(target=func1,args=('hello','world')) //这句话只是创建了一个线程,并未执行这个线程,此时线程处于新建状态。
t1.isAlive() 线程是否在运行
t1.getName 取线程名
t1.setName('test1') 设置线程名
t1.start() 启动线程,此时线程仍未处于运行状态,只是处于准备状态。
t1.join() 等待线程执行完
 
进程所在的线程是主线程
2、守护线程
t1.setDaemon(True)
主进程执行结束时,如果是守护线程,且守护线程没有执行结束,也一并随着主线程退出
# encoding=utf-8
import threading
import time
 
def func1(a=None, b=None):
print a,b
print 'enter func1'
time.sleep(5)
print 'exit func1'
 
t1 = threading.Thread(target=func1, args=('Hello ','World!'))
print t1.isAlive()
print t1.getName()
t1.setDaemon(True)
print 'daemon:',t1.isDaemon()
t1.setName('test1')
print t1.getName()
t1.start()
time.sleep(1.1)
print t1.isAlive()
print 'main thread end'
 
3、threading.currentThread() 主线程MainThread
二、多线程编程的方式
1、创建线程的两种方式
方式一:Thread的方式,新建一个线程实例,通过target传入执行流。通过args传入参数
方式二:Thread类通过重写的方式,t1.start()(内部调用了run())。所以可以重写run()方法,达到我们想要的效果
 
2、方式二:重写Thread类
import threading
class Mythread(threading.Thread):
def __init__(self,a):
threading.Thread.__init__(self):
self.a=a
def run(self):
print 'now sleep',self.a,'seconds'
time.sleep(a)
print 'sleep end'
 
t1=MyThread(3)
t2=MyThread(2)
t1.start()
t2.start()
t1.join()
t2.join()
 
#隐含问题:对于线程的执行结果,主线程如何获取?
(1)通过队列的方式
(2)通过全局变量的方式
 
3、并发与并行
并发是指一个时间段内同时运行,表示的是一个区间
而并行是指在同一个时间点上都在运行,是一个点,并且并发在同一时间点上只能有一个程序在运行
并发线程的两种关系:同步与互斥。
 
三、线程池
from multiprocessing.dummy import Pool
def func(a):
time.sleep(1)
print a
if __name__=='__main__':
lista=[1,2,'a','b','5']
pool=Pool(5)
pool.map(func,lista)
pool.close() #线程池不接受新线程的请求
pool.join() #等待线程全部执行完
 

Python之多线程:Threading模块的更多相关文章

  1. Python:多线程threading模块

    目录 Thread对象 Lock对象 local对象 Thread对象: 多任务可以由多进程完成,也可以由一个进程内的多线程完成.进程是由至少1个线程组成的. threading模块在较低级的模块 _ ...

  2. Python:使用threading模块实现多线程编程

    转:http://blog.csdn.net/bravezhe/article/details/8585437 Python:使用threading模块实现多线程编程一[综述] Python这门解释性 ...

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

    现在把关于多线程的能想到的需要注意的点记录一下: 关于threading模块: 1.关于 传参问题 如果调用的子线程函数需要传参,要在参数后面加一个“,”否则会抛参数异常的错误. 如下: for i ...

  4. python编程中的并发------多线程threading模块

    任务例子:喝水.吃饭动作需要耗时1S 单任务:(耗时20s) for i in range(10): print('a正在喝水') time.sleep(1) print('a正在吃饭') time. ...

  5. Python初学——多线程Threading

    接着上篇继续跟着沫凡小哥学Python啦 1.1 什么是多线程 Threading 多线程可简单理解为同时执行多个任务. 多进程和多线程都可以执行多个任务,线程是进程的一部分.线程的特点是线程之间可以 ...

  6. Python开发——14.threading模块和multiprocess模块

    一.threading模块 1.threading类的两种创建方法 (1)直接创建 import time import threading def Hi(num): print("hell ...

  7. 多线程threading模块

    python的多线程编程 简介 多线程编程技术可以实现代码并行性,优化处理能力,同时功能的更小划分可以使代码的可重用性更好.Python中threading和Queue模块可以用来实现多线程编程. 详 ...

  8. python中的threading模块使用说明

    这段时间使用python做串口的底层库,用到了多线程,对这部分做一下总结.实际用完了后再回过头去看python的官方帮助文档,感觉受益匪浅,把里面的自己觉得有用的一些关键点翻译出来,留待后续查验.th ...

  9. Python学习【第26篇】:Python系列- 多线程(threading)

    线程的调用方式:threanding模块 import threading import time def sayhi(num): #定义每个线程要运行的函数 print("running ...

  10. python的多线程threading

    多线程threading 1.Thread创建线程: 上代码: #!/usr/bin/env python3 import threading import time def A(): t_name ...

随机推荐

  1. jira安装说明

    阅读目录 1.1 jira说明 1.2 安装配置jira 1.3 web界面访问 1.4 创建第一个项目 1.5 参考文献 回到顶部 1.1 jira说明 JIRA是Atlassian公司出品的项目与 ...

  2. python基础之继承派生、组合、接口和抽象类

    类的继承与派生 经典类和新式类 在python3中,所有类默认继承object,但凡是继承了object类的子类,以及该子类的子类,都称为新式类(在python3中所有的类都是新式类) 没有继承obj ...

  3. Android面试收集录2 Broadcast Receiver详解

    1.Broadcast Receiver广播接收器简单介绍 1.1.定义 Broadcast Receiver(广播接收器),属于Android四大组件之一 在Android开发中,Broadcast ...

  4. java程序——凯撒加密

    古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报: 请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图.   设计思想:输入一个字符串,然后将其中每 ...

  5. 4 . GET方法实现文章分类

    复习:博客站点 <!DOCTYPE html> {% load staticfiles %} <html> <head> <meta charset=&quo ...

  6. 安测云验证有CTA问题

    背景: 现在所有的app 都需要通过工信部的审核.用户不同意之前,不能联网. 那么,我怎么知道自己的应用有没有联网呢?那么多sdk ,那么多代码?我怎么测试呢? 哈哈,我们测试给的方法真的很管用. l ...

  7. 分布式缓存技术memcached学习系列(一)——linux环境下编译memcahed

    安装依赖工具 [root@localhost upload]# yum  install gcc  make  cmake  autoconf  libtool 下载并上传文件 memcached 依 ...

  8. Eclipse 修改字符集---Eclipse教程第02课

    默认情况下 Eclipse 字符集为 GBK,但现在很多项目采用的是 UTF-8,这是我们就需要设置我们的 Eclipse 开发环境字符集为 UTF-8, 设置步骤如下: 在菜单栏选择 Window ...

  9. R语言中的机器学习包

    R语言中的机器学习包   Machine Learning & Statistical Learning (机器学习 & 统计学习)  网址:http://cran.r-project ...

  10. 程序员最值得听的歌曲TOP10

      No.10 一剪梅 费玉清 - 玉笛公子 <一剪梅>是1984年台湾同名电视剧的片头曲,原唱为林禹胜,经典版本由费玉清演唱,后又成为2009年霍建华.吕一主演电视剧<新一剪梅&g ...