python3.5.3rc1学习七:多线程
import threading
def exampleFun():
    #打印当前激活的线程数量
    print(threading.active_count)
    #查看上面激活的线程是哪几个
    print(threading.enumerate())
exampleFun()
#创建线程
def exampleFuc():
    added_thread = threading.Thread(target=thread_job)
    added_thread.start()
def thread_job():
    print("这是一个添加的线程,序列号是%s" % threading.current_thread())
exampleFuc()
print("--------------------")
import time
def thread1_job():
    print("T1开始\n")
    for i in range(10):
        time.sleep(0.5)
    print("T1 结束\n")
def exampleFunc():
    thread1 = threading.Thread(target=thread1_job,name="T1")
    thread1.start()
    thread1.join()
    print("所有任务都完成了。 \n")
exampleFunc()
print("--------------------")
from queue import Queue
def job(data,q):
    for i in range(len(data)):
        data[i] = data[i]**2
        # put方法把结果放入队列,这里不能使用return语句  
        q.put(data)
def exampleFunction():
     # 新建一个队列
    q  =  Queue()
     # 新建一个空的多线程列表
    threads = []
    # 给出一个数据,到job去计算  
    data = [[1,2,3],[2,3,4],[3,4,5],[4,5,6]]
     # for 循环创建一个多线程,大小根据data[]的大小
    for x in range(4):
        t = threading.Thread(target = job,args=(data[x],q))
        #启动线程
        t.start()
        # 把创建线程添加到多线程threads这个列表
        threads.append(t)
    for each_thread in threads:
        each_thread.join()
    # 定义一个计算结果列表
    results = []
     # 把结果分别从队列取出,这里需要取4次
    for y in range(4):
        # q.get()就是从队列取出结果
    
        
        results.append(q.get())
        # 等所以事情完成,就打印结果列表
    print(results)
exampleFunction()
        
posted on 2017-11-30 13:37 sunny_2016 阅读(128) 评论(0) 收藏 举报
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号