首页 > 其他 > 详细

threading包

时间:2018-04-05 18:59:12      阅读:216      评论:0      收藏:0      [点我收藏+]

参考:https://www.cnblogs.com/tkqasn/p/5700281.html

参考:https://www.cnblogs.com/tkqasn/p/5700281.html

threading用于提供线程相关的操作,线程是程序工作中最小的单元,python当前版本的多线程库中没有实现优先级、线程组、线程也不能被停止、暂停、恢复、中断。

threading中提供的类包括Thread、Lock、RLock、Condition、Event、Timer等

threading模块提供的常用方法包括:

threading.currentThread():返回当前的线程变量

threading.enumerate():返回一个包含当前正在运行的线程的list

threading.activeCount():返回正在运行的线程数量,与len(threading.enumerate())的效果相同

threading模块提供的常量:

threading.TIMEOUT_MAX:设置threading全局超时时间

简易的开启线程:

def sayhi(k):
    print(‘your id is %s‘ %k)  
t=threading.Thread(target=sayhi,args=(‘hh‘,))     #第一个参数target是线程函数变量,第二个参数args是一个数组变量参数如果只传递一个值就只需要一个i,如果要传递多个参数,那么还可以继续传递其他参数,其中逗号不能少,少了则不是数组。
t.start()
#type((1,))的返回结果为数组tuple

创建线程的两种方法:

import threading
import time
#方法一:将要执行的方法作为参数传给Thread的构造方法
def action(arg):
    time.sleep(1)
    print (‘the arg is:%s\r‘ %arg)   #\r表示指针回到该行开头
for i in range(4):
    t =threading.Thread(target=action,args=(i,))   #开启线程,target表示要执行的方法,name表示线程名,args/kwargs表示要传入方法的参数
    t.start()
print (‘main thread end!‘)
# 或者先建Thread的一个继承类,然后用这个类中的start()方法打开:
t=threading.Thread(target=action,args=(‘hh‘,))
t.start()
#方法二:从Thread继承,并重写run()
class MyThread(threading.Thread):
    def __init__(self,arg):
        super(MyThread, self).__init__()#注意:一定要显式的调用父类的初始化函数。
        self.arg=arg
    def run(self):#定义每个线程要运行的函数
        time.sleep(1)
        print (‘the arg is:%s\r‘ % self.arg)

for i in range(4):
    t =MyThread(i)
    t.start()

print (‘main thread end!‘)

 简单的线程实例:

import threading  
import queue  
import time  
class mn_access(threading.Thread):  
 def __init__(self,interval):  
  threading.Thread.__init__(self)  
  self.interval=interval  
  self.thread_stop=False  
 def run(self):      #这个函数中存放用户自己的功能代码  
  i=1;  
  while not self.thread_stop:  
   print("thread%d %s: i am alive hehe %d" %(self.ident,self.name,i))  
   time.sleep(self.interval)  
   i=i+1  
 def stop(self):  
  self.thread_stop = True  
if __name__ == "__main__":  
 mn=mn_access(1)  
 mn.start()     #线程开始  
 time.sleep(5)  
 mn.stop()

 

threading包

原文:https://www.cnblogs.com/xiaochouk/p/8723738.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!