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. 使用 python快速搭建http服务

    在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 SimpleHTTPServer. 我们可以很简单的使用  python -m SimpleHTTPSer ...

  2. Struts2之类范围拦截器和方法拦截器

    1.Struts2拦截器的体系结构 Struts2拦截器最大的特点是其透明性,即用户感觉不到它的存在,但我们在使用Struts2框架时,拦截器时时刻刻都在帮助我们处理很多事情. 包括: 文件上传 表单 ...

  3. Oracle 11g R2在 win7 64位的安装流程图解【含常见问题解决方案】

    ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一.Oracle 11 ...

  4. 关于IT术语---ip、uv、pv、tps、qps、rps

    涉及到IT方面的几条术语,这里要好好说道说道: 只要和网站打交道,难免会经常听到一系列的转有名词  >>>  系统今日UV多少.PV多少.QPS多少之类的问题.这里就对这些常见的术语 ...

  5. python爬虫:利用BeautifulSoup爬取链家深圳二手房首页的详细信息

    1.问题描述: 爬取链家深圳二手房的详细信息,并将爬取的数据存储到Excel表 2.思路分析: 发送请求--获取数据--解析数据--存储数据 1.目标网址:https://sz.lianjia.com ...

  6. python QQ邮件发送邮件

    # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText from email.header import ...

  7. scala Actor -03

    1.对于上一篇讲解的scala的一些补充 val files = Array[String]("a.txt","b.txt","c.txt" ...

  8. Dapper基础增删查改、事务和存储过程

    1.前言 Dapper是一个轻量级的orm框架,上手也非常的简单,它可以实体映射,所以先准备实体如下: public class Couser { public int id { get; set; ...

  9. 学习网络请求返回json对应的model

    原来泛型可以这样用: 网络返回基类,返回一个code,msg,body,其中body不确定,所以,我们把它写成泛型 import org.json.JSONObject; /** * 网络请求的基类 ...

  10. Java中的初始化详细解析

    今天所要详细讲解的是Java中的初始化,也就是new对象的过程中,其程序的行走流程. 先说没有静态成员变量和静态代码块的情况. public class NormalInit { public sta ...