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. JAVAOOP异常

    排序: Try-catch-finally:try正常执行,如果有异常执行catch后执行finally,如果没有直接执行finally 执行顺序:try-catch:try中的语句正常执行,如果遇到 ...

  2. oauth2.0协议接口-第一篇-api逻辑

    开放平台是支持OAuth2.0和RESTful协议的资源分享平台,经过授权的合作伙伴可以读取和写入资讯.用户.文件.数据库等资源. 1.创建数据库表结构 CMSSyncClient(数据同步客户端) ...

  3. cookie操作和代理

    cookie操作 爬取豆瓣个人主页 # -*- coding: utf-8 -*- import scrapy class DoubanSpider(scrapy.Spider): name = 'd ...

  4. qt5.10.1编译记录

    qt版本更新比较快,不知道选哪个版本合适,故选择一个较新版本的. 平台imx6    +    linux4.1.16   +   qt5.10.1 采用明远智睿提供的编译器:fsl-imx-fb-g ...

  5. Linux设置下载站点

    https://blog.csdn.net/jfhkd2012/article/details/50912757

  6. cocos2d-x 3.0 导演,场景,层,精灵

    导演(Director) 一款游戏好比一部电影,只是游戏具有更强的交互性,不过它们的基本原理是一致的.所以在Cocos2dx中把统筹游戏大局的类抽象为导演(Director),Director是整个c ...

  7. BZOJ 2907: 拜访神犇

    设最优策略为第一步向左走 那么肯定是走到最左边最优 需要补一些步数 一种是最右边的连着选,多出一倍代价 一种是不连着选,多出两倍代价 #include<cstdio> #include&l ...

  8. P3819 松江1843路(洛谷月赛)

    P3819 松江1843路 题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一 ...

  9. django之python3.4及以上连接mysql的一些问题记录

    首先,祭出大杀器whl https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient django1.x与django2.x 在项目的写法上有一些区别 ...

  10. Python 3基础教程15-读文件内容

    前面两篇关于写文件和更新文件内容,我们最后都是手动去打开检查是否更新了.现在我们这里通过函数读取之前文件内容,打印到屏幕终端. 运行结果: