python之多线程threading模块

#_*_coding:utf-8_*_
import threading
from time import sleep,ctime

#秒数
loops = [4,2]

#这个函数是模拟一个实实在在是用来干活的函数
def loop(nloop,nsec):
    print "函数%s 启动时间:%s 等待秒数:%s \n" %(nloop,ctime(),nsec)
    sleep(nsec) #等待时间

def main():
    print "主线程在 %s 开始启动...:" % ctime()
    threads = [] #这个列表用来存放创建的线程
    nloops = range(len(loops))  #把全局变量中的loops列表引进来,所生成的局部变量nloops作为索引
    #顾nloops存储的是[0,1]

    for i in nloops:
        t = threading.Thread(target=loop,args=(i,loops[i])) #创建线程
        threads.append(t)   #创建到线程累加存放到列表threads中

    for i in nloops:
        threads[i].start() #所有线程创建完之后,便利存放线程的列表,一起启动线程

    for i in nloops:
        threads[i].join()  #程序挂起,直到线程结束,再也不用管理分配锁,获得锁,释放锁,检查锁到状态等令人纳闷到问题,只需调用join()函数就可以啦

    print "所有函数完成时间:", ctime()

if __name__ == ‘__main__‘:
        main()

运行结果

/usr/bin/python2.7 /home/toby/PycharmProjects/SOMS/test2.py
主线程在 Wed Mar  1 19:59:53 2017 开始启动...:
函数0 启动时间:Wed Mar  1 19:59:53 2017 等待秒数:4

函数1 启动时间:Wed Mar  1 19:59:53 2017 等待秒数:2

所有函数完成时间: Wed Mar  1 19:59:57 2017

时间: 2024-10-23 13:36:43

python之多线程threading模块的相关文章

Python 多线程threading模块

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

Python:使用threading模块实现多线程(转)

分类: python   标签: thread    评论: 暂无评论   阅读:5,420 views 综述 Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势. 在Python中我们主要是通过thread和 threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用

Python 官方代码threading模块的一个死锁的bug

Python的threading模块有一个比较严重的bug:那就是可能会让线程的等待提前结束或者延迟,具体的原因是因为线程的wait操作判断超时时依赖于实时时间,即通过time.time()获取到的时候,为了显示这个问题,请看下面的例子: from threading import Thread from threading import Event import time e = Event() stop = False class MyThread(Thread): def __init__

再看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

thread:多线程的底层支持模块,一般不建议使用: threading:对thread进行了封装,将一些线程的操作对象化,一般采用这种方法实现多线程编程 多线程实现有两种模式: 1.创建线程要执行的函数,把这个函数传递进Thread对象里 2.直接从Threading继承,新建一个新的类class, threading模块: threading.Thread类的重要函数 threading.currentThread(): 返回当前的线程变量. threading.enumerate(): 返

Py西游攻关之多线程(threading模块)

线程与进程 什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 A thread is an execution context, which is all the information a CPU needs to execute a stream of instructions. Suppose you're reading a

Python的多线程threading和多进程multiprocessing

python中的多线程就是在一个进程中存在着多个线程,在线程中,所有的线程都是共享资源的,线程之间的数据通信很简单.但是python仅支持一个线程的运行,因为python中存在一个全局解释器锁GIL(global interpreter lock),正是这个锁能保证同一时刻只有一个线程在运行,所以多线程依旧像是单线程的运行. GIL无疑就是一把对多线程有影响的全局锁,解决它对多线程的影响,不单单是释放GIL这么简单.GIL使得对象模型都是可以并发访问.GIL全局解释器锁解决多线程之间数据完整性和

多线程threading模块

threading模块是python中专门提供用来做多线程的模块.threading中最常用的类是thread. 查看线程数量函数:threading.enumerate() 查看线程当前名字函数:threading.current_thread() 以下看一个简单的多线程程序: #encoding: utf-8#采用多线程的方式import threadingimport time def coding(): for x in range(3): print('正在写代码%s'%threadi