python thread 并发且顺序运行示例_python

复制代码 代码如下:

#-*- coding:utf-8 -*-
import threading
import time
def fun(name, ls_name, front_thread = None):
'''''
线程启动函数
通过front_thread来使用线程有序的运行
'''
time.clock()
time.sleep(2)
# 如果front_thread存在,则在front_thread运行完成后,才运行当前线程
if front_thread != None:
front_thread.join()
ls_name.append(name)
print "thread %s : %s"% (name, time.clock())

if __name__ == '__main__':
ls_result_name = []
ls_thread = []
time.clock()
# 逐一启动1000个线程
for i in range(0,10):
if len(ls_thread) == 0:
t = threading.Thread(target=fun, args=(i,ls_result_name,None))
else:
t = threading.Thread(target=fun, args=(i,ls_result_name,ls_thread[-1]))
t.start()
ls_thread.append(t)

# 等待所有线程结束
for t in ls_thread:
t.join()

print 'ls_result_name:', ls_result_name
print "main thread:%s" % time.clock()

运行结果为:
thread 0 : 1.99962006344
thread 1 : 2.00000866032
thread 2 : 2.00059113658
thread 3 : 2.00080345407
thread 4 : 2.00100068584
thread 5 : 2.00119456523
thread 6 : 2.00138593033
thread 7 : 2.00166753037
thread 8 : 2.00211758757
thread 9 : 2.0024776892
ls_result_name: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
main thread:2.003211302
线程更明细的使用可参考:
http://docs.python.org/library/threading.html
time.clock模块的更详细介绍可参考:
http://blog.csdn.net/kiki113/archive/2009/03/28/4033017.aspx

时间: 2024-10-27 13:49:06

python thread 并发且顺序运行示例_python的相关文章

python实现简单爬虫功能的示例_python

在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度.好吧-!其实你很厉害的,右键查看页面源代码. 我们可以通过python 来实现这样一个简单的爬虫功能,把我们想要的代码爬取到本地.下面就看看如何使用python来实现这样一个功能. 一,获取整个页面数据 首先我们

python动态监控日志内容的示例_python

日志文件一般是按天产生,则通过在程序中判断文件的产生日期与当前时间,更换监控的日志文件程序只是简单的示例一下,监控test1.log 10秒,转向监控test2.log 程序监控使用是linux的命令tail -f来动态监控新追加的日志 复制代码 代码如下: #!/usr/bin/python# encoding=utf-8# Filename: monitorLog.pyimport osimport signalimport subprocessimport time logFile1 =

Python greenlet实现原理和使用示例_python

最近开始研究Python的并行开发技术,包括多线程,多进程,协程等.逐步整理了网上的一些资料,今天整理了一下greenlet相关的资料. 并发处理的技术背景 并行化处理目前很受重视, 因为在很多时候,并行计算能大大的提高系统吞吐量,尤其在现在多核多处理器的时代, 所以像lisp这种古老的语言又被人们重新拿了起来, 函数式编程也越来越流行. 介绍一个python的并行处理的一个库: greenlet. python 有一个非常有名的库叫做 stackless ,用来做并发处理, 主要是弄了个叫做t

python单线程实现多个定时器示例_python

单线程实现多个定时器 NewTimer.py 复制代码 代码如下: #!/usr/bin/env python from heapq import *from threading import Timerimport threadingimport uuidimport timeimport datetimeimport sysimport math global TimerStampglobal TimerTimes class CancelFail(Exception):    pass c

Python中的zip函数使用示例_python

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表.具体意思不好用文字来表述,直接看示例: 1.示例1: 复制代码 代码如下: x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) print xyz 运行的结果是: [(1, 4, 7), (2, 5, 8), (3, 6, 9)] 从这个结果可以看出zip函数的基本运作方式. 2.示例2: 复制代码 代码如下: x = [1, 2, 3] y = [

Python中的__SLOTS__属性使用示例_python

看python社区大妈组织的内容里边有一篇讲python内存优化的,用到了__slots__.然后查了一下,总结一下.感觉非常有用 python类在进行实例化的时候,会有一个__dict__属性,里边有可用的实例属性名和值.声明__slots__后,实例就只会含有__slots__里有的属性名. # coding: utf-8 class A(object): x = 1 def __init__(self): self.y = 2 a = A() print a.__dict__ print(

Python map和reduce函数用法示例_python

先看map.map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 举例说明,比如我们有一个函数a(x)=x*2,要把这个函数作用在一个list [1, 2, 3, 4, 5]上,就可以用map()实现如下: 复制代码 代码如下: >>> def a(x): ...     return x * 2 ... >>> map(a, [1,2,3,4,5]) [2, 4, 6, 8, 10] map传入

python支持断点续传的多线程下载示例_python

复制代码 代码如下: #! /usr/bin/env python#coding=utf-8 from __future__ import unicode_literals from multiprocessing.dummy import Pool as ThreadPoolimport threading import osimport sysimport cPicklefrom collections import namedtupleimport urllib2from urlparse

使用Python编写vim插件的简单示例_python

 Vim 插件是一个 .vim 的脚本文件,定义了函数.映射.语法规则和命令,可用于操作窗口.缓冲以及行.一般一个插件包含了命令定义和事件钩子.当使用 Python 编写 vim 插件时,函数外面是使用 VimL 编写,尽管 VimL 学起来很快,但 Python 更加灵活,例如可以用 urllib/httplib/simplejson 来访问某些 Web 服务,这也是为什么很多需要访问 Web 服务的插件都是使用 VimL + Python 编写的原因. 在开始编写插件之前,你需要确认 Vim