3月 22

python 多线程程序,控制线程数

python 控制线程数

         用python写多线程的脚本,需要控制线程数。需要自己判断线程是否运行完毕。测试代码如下:

#!/bin/env python
# -------------------------------------------------------------------------------
# Filename:    my-thread.py
# Revision:
# Date:        2012-12-19
# Author:      simonzhang
# web :        www.simonzhang.net
# Email:       simon-zzm@163.com
# ------------------------------------------------------------------------------- 

####加载多线程模块
import threading
####需要个随机数和延迟,为测试用
import random
from time import sleep

#### 多线程运行的测试部分。循环3次,每次间隔0到2的随机秒数,
#### 等待后打印,运行总次数,线程数和循环值
def test_func(thread_number,sequence):
    for i in range(3):
        sleep(random.randint(0,2))
        print('run sequence:%s thread %d is running %d ' % (sequence,thread_number,i))   

def main():
    #### 定义循环序列,就是一个线程池
    threads = []
    #### 定义总共运行的次数
    all_number = 5
    #### 定义运行所使用的线程数
    thread_lines = 3
    #### 定义开始线程数
    start_line = 0
    #### 首先构建线程池
    for i in range(0,thread_lines):
        t = threading.Thread(target=test_func, args=(i,start_line,))
        threads.append(t)
        start_line +=1
    #### 运行第一批线程的任务
    for t in threads:
        t.start()
    #### 循环运行全部任务
    for number_line in xrange(start_line,all_number):
        #### 初始化当前线程的状态
        thread_status = False
        #### 初始化检查循环线程的开始值
        loop_line = 0
        #### 开始循环检查线程池中的线程状态
        while thread_status == False :
            #### 如果检查当前线程,如果线程停止,代表任务完成,则分配给此线程新任务,
            #### 如果检查当先线程正在运行,则开始检查下一个线程,直到分配完新任务。
            #### 如果线程池中线程全部在运行,则开始从头检查
            if threads[loop_line].isAlive() == False :
                t = threading.Thread(target=test_func, args=(loop_line,number_line,))
                threads[loop_line]=t
                threads[loop_line].start()
                thread_status = True
            else:
                if loop_line >= thread_lines-1 :
                    loop_line=0
                else:
                    loop_line+=1
    #### 等待超时
    sleep(30)
    #### 结束所有线程
    for number_line in xrange(start_line,thread_lines):
        thread[number_line].exit()

if __name__ == "__main__":
    main()

          本代码存在一个问题,运行完毕后主进程在运行,程序走到下一步,但是还有线程也在运行。所以需要在调用全部完毕后,有一段检查线程是否全部结束,可以使用jion()进行阻塞判断即可。根据实际需要编写。

3月 22

读《信任代理》

        书的副标题是成就网络的影响力。我也是一名从事网络事业的工作者,有得知本书作者是 克里斯。布洛根和朱利恩。史密斯,两位在网络中都是相当有影响力,且本书也被众多网络中的名人所推荐,所以有必要拜读一番。
        我对书中提出的两个词很感兴趣,“信任代理”和“网络的土著民”。很多时候某些事物、现象看似很平长,但是真的要总结归纳或者定义却很难。这两个词是对现在从事网络事业人的非官方定义。定义的形象,总结的透彻,也加入了新的理解方式。书中主要讲了信任的重要性,如何获得信任,如果参与和协助他人,如果组织团队,如果创建品牌,如何完善自己的游戏规则。其实网络和日常生活是相同的,网络发展的历史和真实社会的历史也是相同的。只是有了网络,人们的圈子扩大了,交往的范围扩大了。文化、信仰、理念被最大化的融合了。个人感觉在网络与在真实社会中没有什么区别,做有诚信待人,踏踏实实做事这就是做人永远的真理。
         推荐朋友们有空读读。
image