zoukankan      html  css  js  c++  java
  • python_线程

    父进程创建线程子进程,子进程相当于父进程复制了一份,两个子进程的数据不共享。

    两个线程共享同一份数据,同一个进程中的线程之间可以通行

    一个线程可以控制和操作同一个进程里的其他线程,但是进程只能操作子进程

    主线程和子线程是并发执行的,没有逻辑先后之分


    1. 创建一个新的线程

    import threading
    def testrun(x):
        a = 1
        while True:
            a+=1
            print("task",a)
    
    t1 = threading.Thread(target=testrun,args = (1,)) #注意, 方法不能加括号, 一个参数也应该加 逗号
    t1.start()
    View Code

    2. 使用类创建线程

    import threading
    import time
    class myThread(threading.Thread):
        def __init__(self,n):
            super(myThread,self).__init__()
            self.n = n
    
        def run(self):  #函数名必须为 run
            print("class task",self.n)
            time.sleep(2)
    x1 = myThread(1)
    x2 = myThread(2)
    
    x1.start()
    #x1.join()   #程序变成串行,等待x1执行结束
    x2.start()
    x1.join()    #=  wait()等待线程x1执行完成
    x2.join()

    3.  join()函数详解

         等待该线程执行结束才执行下一行代码,可以实现线程的串行

    import threading
    import time
    def testrun(x):
        print("task",x)
        time.sleep(2)
    start = time.time()
    tastlist = []
    for i in range(50):
        t1 = threading.Thread(target=testrun,args=(i,))
        tastlist.append(t1)
        t1.start()
    for t in tastlist:     #每一个线程都join(),d等待最后一个线程执行结束
        t.join()
    endtime = time.time()-start
    print("end",endtime)

     4.  

    threading.current_thread()  返回当前的线程
    threading.active_count() 统计线程的个数

    5. 守护线程
    主线程退出后守护线程不管有没有执行完成,都要退出
    设置应该放在 start()函数之前
    t1 = threading.Thread(target=testrun,args = (1,)) #注意, 方法不能加括号, 一个参数也应该加 逗号
    t1.setDaemon(True)  #将该线程设置为  守护线程
    t1.start()
    View Code

    6. 全局锁,python代码同一时刻只有一个线程在运行

  • 相关阅读:
    Mybatis <set>标签
    Mybatis <where>标签
    Mybatis choose (when, otherwise)标签
    Mybatis <if>标签
    Mybatis <Sql>标签
    Mybatis配置详解
    [转]在浏览器的标签页显示网站标志图标(或指定图标)的方法
    【转】如何建立一个样式新颖的CSS3搜索框
    【转】css布局居中和CSS内容居中区别和对应DIV CSS代码
    作业:按钮控制打开关闭新窗口及新窗口按钮关闭父窗口
  • 原文地址:https://www.cnblogs.com/gongfuxiaozhen/p/8552099.html
Copyright © 2011-2022 走看看