zoukankan      html  css  js  c++  java
  • threading多线程

    什么是线程?

    线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。一个进程中可以包含多个线程。

     1 import threading
     2 import time
     3 begin = time.time()
     4 def f1(a,b):
     5     print("f1",a,b)
     6     time.sleep(2)
     7 def f2(a,b,c):
     8     print("f2",a,b,c)
     9     time.sleep(3)
    10 t1 = threading.Thread(target=f1,args=(1,1))
    11 t2 = threading.Thread(target=f2,args=(2,2,2))
    12 t1.start()
    13 t2.start()
    14 end = time.time()
    15 print(end-begin)

    用过上述的代码实现了三条(加上主线程)线程的“并行”。

    线程的创建

      t1 = threading.Thread(target=f1,args=(1,1)) 其中target是目标函数,无括号。args传入变量。

      t1.start()表示激活这个线程。

    .join 和 setdeamon

      t1.join必须在start之后加入,表示主线程必须等待该子线程运行完之后再结束。

      t1.setDaemon(True) 必须在start之前加入。表示主线程不在等待此子线程而结束。但是必须等待其他子线程结束。

    其他内容

      线程之间数据相互影响,但是进程之间完全独立。

      由于cpython解释器存在的global interpreter lock使得每个进程一次只能解释一个线程。所以Python没有实现真正意义上的并行(多核处理同时多个线程)。

      线程分为IO密集型和计算密集型。由于GIL的存在Python在处理多个计算密集型线程时比不用多线程用时更长。(抢夺CPU资源)在3.5优化后好很多。

      解决办法:1.多个进程(会复制一个主进程内存爆炸)2.协程等。3.其他语言。

  • 相关阅读:
    Linux下安装Tomcat服务器和部署Web应用
    全链路压测
    性能测试二八原则,响应时间2/5/8原则
    chromedriver、firefox-geckodriver、iedriver下载链接
    selenium3+python3环境搭建
    SQL注入原理
    loadrunner之header相关,token等
    安全测试——利用Burpsuite密码爆破(Intruder入侵)
    性能测试之系统架构分析
    性能测试性能分析与调优的原理
  • 原文地址:https://www.cnblogs.com/khal-Cgg/p/5920184.html
Copyright © 2011-2022 走看看