zoukankan      html  css  js  c++  java
  • python基础一 day39 线程探索

    # 进程 是 最小的 内存分配单位
    # 线程 是 操作系统调度的最小单位
    # 线程直接被CPU执行,进程内至少含有一个线程,也可以开启多个线程
    # 开启一个线程所需要的时间要远远小于开启一个进程
    # 多个线程内部有自己的数据栈,数据不共享
    # 全局变量在多个线程之间是共享的
    # GIL锁(即全局解释器锁)
    # 在Cpython解释器下的python程序 在同一时刻 多个线程中只能有一个线程被CPU执行
    # 高CPU : 计算类 --- 高CPU利用率
    # 高IO : 爬取网页 200个网页
    # qq聊天 send recv
    # 处理日志文件 读文件
    # 处理web请求
    # 读数据库 写数据库

    import os
    import time
    from threading import Thread
    # 多线程并发
    # def func(a,b):
    #     global g
    #     g = 0
    #     print(g,os.getpid())
    #
    # g = 100
    # t_lst = []
    # for i in range(10):
    #     t = Thread(target=func,args=(i,5))
    #     t.start()
    #     t_lst.append(t)
    # for t in  t_lst : t.join()
    # print(g)
    # class MyTread(Thread):
    #     def __init__(self,arg):
    #         super().__init__()
    #         self.arg = arg
    #     def run(self):
    #         time.sleep(1)
    #         print(self.arg)
    #
    # t = MyTread(10)
    # t.start()
    import time
    from threading import Thread
    from multiprocessing import Process
    def func(n):
        n + 1
    
    if __name__ == '__main__':
        start = time.time()
        t_lst = []
        for i in range(100):
            t = Thread(target=func,args=(i,))
            t.start()
            t_lst.append(t)
        for t in t_lst:t.join()
        t1 = time.time() - start
    
        start = time.time()
        t_lst = []
        for i in range(100):
            t = Process(target=func, args=(i,))
            t.start()
            t_lst.append(t)
        for t in t_lst: t.join()
        t2 = time.time() - start
        print(t1,t2)

    线程的其他一些方法:

    import time
    import threading
    
    def wahaha(n):
        time.sleep(0.5)
        print(n,threading.current_thread(),threading.get_ident())
    
    for i in  range(10):
        threading.Thread(target=wahaha,args=(i,)).start()
    print(threading.active_count())    # 10
    print(threading.current_thread())
    print(threading.enumerate())
  • 相关阅读:
    利用API将软件嵌入网页中
    TensorFlow:tf.train.Saver()模型保存与恢复
    TensorFlow:tf.reduce_mean(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
    TensoFlow的tf.reshape()
    Python:查看矩阵大小,查看列表大小
    TensorFlow:tf.contrib.layers.xavier_initializer
    python:list
    TensorFlow-Python:创建空列表list与append的用法
    MATLAB:读取mat文件中物体的三维坐标,显示三维模型
    查看已装TensorFlow的版本和路径
  • 原文地址:https://www.cnblogs.com/wang-tan/p/11442363.html
Copyright © 2011-2022 走看看