栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

与b站阿婆主(莫烦python)一起学python--001

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

与b站阿婆主(莫烦python)一起学python--001

添加线程 add——thread
import threading 多线程模块
def thread_job():
    print("This is  a added Thread ,number is %s"% threading.current_thread())#输出线程的名字
def main():
    added_thread=threading.Thread(target=thread_job)#添加线程,定义这个线程现在在做什么
    print(threading.active_count())#算一下现在有多少个激活了的线程
    print(threading.enumerate())#枚举,列举
    print(threading.current_thread())#正在运行的线程
if __name__=="__main__":
    main() 
join功能 join 的几种情况
  1. 不加join,会默认执行每个线程中的第一个子句
  2. 加join,若有两个线程1,2
    1. 使用线程1.join(),会执行线程1中所有子句
    2. 使用线程2.join(),会执行线程2中所有子句
import threading
import time


def thread_job():
    print("T1 startn")
    for i in range(10):
        time.sleep(0.1)
    print("T1 finishn")
def thread_job2():
    print("T2 startn")
    print("T2 finishn")
    print("T@@@@@@")


def main():
    added_thread = threading.Thread(target=thread_job,name="T1")  # 添加线程,定义这个线程现在在做什么
    # print(threading.active_count())#算一下现在有多少个激活了的线程
    # print(threading.enumerate())#枚举,列举
    # print(threading.current_thread())#正在运行的线程
    added_thread2 = threading.Thread(target=thread_job2, name="T2")
    added_thread.start()#开始执行某个进程对象
    # added_thread.join()
    added_thread2.start()#开始执行线程对象
    # added_thread2.join()
    print("all donen")#输出结果


if __name__ == "__main__":#实例化
    main()
QUEUE功能

注:多线程返回的结果是没有返回值的 故而可以把结果放在一个长的队列当中

  1. 设定一个函数 对列表中的每一个值 进行平方的运算
  2. 设定多线程函数 multithreading
    1. 设定每一个线程
  3. Queue 模块中的常用方法:
Queue.Queue(maxsize=0)   FIFO, 若是maxsize小于1就表示队列长度无限

Queue.qsize()   返回队列的大小 

Queue.empty()   若是队列为空,返回True,反之False 

Queue.full()   若是队列满了,返回True,反之False

Queue.get([block, [timeout]])   读队列,timeout为等待时间 

Queue.put(item, [block, [timeout]])   写队列,timeout为等待时间 

Queue.queue.clear()   清空队列
多线程的效率-GIL

注:不一定有效率 

多线程并不是把任务同时分给每一个人做任务 这个是不一定的 多线程有一个全局的控制

其实python只能让一个线程在同一时间做一个运算任务

import threading
from queue import Queue
import copy
import time
def job(l,q):
    res = sum(l)
    q.put(res)
def multithreading(l):
    q=Queue()
    threads = [ ]
    for i in range(4):
        t = threading.Thread(target=job,args=(copy.copy(l),q),name="T%i"%i)
        t.start()
        threads.append(t)
    [t.join() for  t  in threads]
    total = 0
    for _ in range(4):
        total++q.get()
    print(total)
def normal(l):
    total = sum(l)
    print(total)
if __name__ == '__main__':
    l=list(range(10000000))
    s_t = time.time()
    normal(l*4)
    print("normal:",time.time()-s_t)
    s_t=time.time()
    multithreading(l)
    print("multithreading:",time.time()-s_t)   

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/972115.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号