zoukankan      html  css  js  c++  java
  • python多线程的实现

    入门案例

     1 import threading,time
     2 '''
     3 #线程的创建有两种方式,1.直接调用,2.继承
     4 '''
     5 # def run(n):
     6 #     print('test',n)
     7 # #1.直接调用
     8 # t1 = threading.Thread(target=run,args=(1,))
     9 # t2 = threading.Thread(target=run,args=(2,))
    10 # t1.start()
    11 # t2.start()
    12 # #2.继承
    13 # class Mythread(threading.Thread):
    14 #     def __init__(self,n):
    15 #         super(Mythread,self).__init__()
    16 #         self.n = n
    17 #     def run(self):
    18 #         print('test',self.n)
    19 # t1 = Mythread(1)
    20 # t2 = Mythread(2)
    21 # t1.start()
    22 # t2.start()
    23 #统计多个线程耗时,考虑到线程的并发执行,所以每个线程各自指向各自的,主线程执行完后会自动结束,并发执行的时间统计思路就是在线程执行后使用jion()方法,类似于java的wait()
    24 def run(n):
    25     print('thread-',n)
        #为了更加直观的看到多线程执行的效果,我们使用sleep方法
    26 time.sleep(2) 27 start_time = time.time() 28 t_list = [] 29 for i in range(50): 30 t = threading.Thread(target=run,args=('{}'.format(str(i)),)) 31 t.start() 32 t_list.append(t) 33 for j in t_list: 34 j.join() 35 end_time = time.time() 36 print('cost time = ',end_time - start_time)
    #浅析pythongil机理
    python gil lock中文名称叫做全局解释器锁,是python用来实现多线程的机制,c python的多线程在实际运行时实际上是单通道的,
    即总是只能使用一核,利用cpu高速的上下文切换实现所谓的多线程的。潜在的危机,共享资源可能与我们预想的不一样。为此我
    们来看以下代码在ubuntu上的运行效果:
     1 #线程锁的研究
     2 def run(n):
     3     global num
     4     #lock.acquire() #为加上本句时的运行效果如下图所示,去掉此处#后一切正常
     5     num += 1
     6     print('thread {}'.format(n))
     7     # time.sleep(0.8)
     8     #lock.release() #去掉此处#后一切正常
    9 num = 0
    10 lock = threading.Lock()
     12 for j in range(100):
    13 t = threading.Thread(target=run,args=(j,))
    14 t_list.append(t)
    15 t.start()
       for k in t_list: #每个线程开始的前提是等待上一个线程返回结果到共享池
      k.join()
     16 print(num)
    
    
    
    
    
    
  • 相关阅读:
    burpsuite-小结
    docker化安装apollo
    Linux Shell基础篇——变量
    Linux 用户篇——用户管理命令之id、whoami、su、chage
    Linux 用户篇——用户管理命令之useradd、passwd、userdel、usermod
    Linux 用户篇——用户管理的配置文件
    Linux 基础——常用的Linux网络命令
    Linux 基础——关机重启命令shutdown、reboot等
    Linux 基础——文件搜索命令find
    Linux 基础——权限管理命令chown、chgrp
  • 原文地址:https://www.cnblogs.com/g177w/p/8150865.html
Copyright © 2011-2022 走看看