您的位置:首页 > 理论基础 > 计算机网络

python网络编程--线程使用threading

2017-06-22 10:28 423 查看

一:线程使用

  线程使用有两种方法,一种是直接使用,二是通过继承threading.Thread类使用

二:函数式使用

 函数式:调用thread模块中的start_new_thread()函数来产生新线程。语法如下:

thread.start_new_thread ( function, args[, kwargs] )
参数说明:
  • function - 线程函数。
  • args - 传递给线程函数的参数,他必须是个tuple类型。
  • kwargs - 可选参数。

三:线程模块

  Python通过两个标准库thread和threading提供对线程的支持。thread提供了低级别的、原始的线程以及一个简单的锁。

  thread 模块提供的其他方法:

  • [li]  threading.currentThread(): 返回当前的线程变量。
  •   threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
  •   threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
[/li]

  除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:

  • run(): 用以表示线程活动的方法。
  • start():启动线程活动。

     

  • join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
  • isAlive(): 返回线程是否活动的。
  • getName(): 返回线程名。
  • setName(): 设置线程名。

四:直接使用

# -*- coding:utf-8 -*-
__author__ = 'shisanjun'

import threading #导入模块
import time

def run(t1):
print("run",t1)
time.sleep(2)

t1=threading.Thread(target=run,args=("t1",)) #实例线程对象
t2=threading.Thread(target=run,args=("t2",))
t1.start() #启动线程
t2.start()

run("t1")
run("t2")

五:通过继承方式实现

# -*- coding:utf-8 -*-
__author__ = 'shisanjun'

import threading
import time

class MyThread(threading.Thread):#继承线程

def __init__(self,n,sleep_time):
super(MyThread,self).__init__()
self.n=n
self.sleep_time=sleep_time

def run(self):

print("start child thread",self.n)
time.sleep(self.sleep_time)

if __name__=="__main__":
start_time=time.time()
t1=MyThread("t1",2)
t2=MyThread("t2",4)
t1.start() #子线程并发
t2.start() #子线程并发

t1.join()#等t1子线程执行完
t2.join()#等t2子线程执行完
print("---main finish--",time.time()-start_time)

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: