您的位置:首页 > 编程语言 > Python开发

Python线程基础

2017-05-08 21:51 274 查看
Python中使用线程有两种方式:函数,或者用类来包装线程对象;

函数方式:调用thread模块中的start_new_thread(function,args[,kwargs])函数来产生新的线程,不过这种方法要求此方法和线程运行的方法在同一个类(级别相同)中;

参数说明:

Function:线程函数

Args:传递给线程函数的参数,他必须是个tuple(元组)类型

Kwargs:可选参数

#coding=utf-8
import thread;
import time;
def print_time(threadName,delay):
count=0;#两个线程共享的是这同一个count
while count<5:
time.sleep(1);
count+=1
print "%s: %s" % ( threadName, time.ctime(time.time()) ),"count=\t"+str(count);

#创建两个线程
try:
thread.start_new_thread(print_time,("thread_name___1",2));
thread.start_new_thread(print_time,("thread_name___2",3));
except BaseException as reason:
print "error"
while 1:
pass


备注:此种方式要求定义线程的级别和启动线程的级别是一致的(启动线程的方法参数中需要方法名);

方式二:类继承threading.Thread,然后重写init()和run()方法

import time;
import threading;

exitFlag = 0

class myThread(threading.Thread):  # 继承父类threading.Thread
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter

def run(self):  # 把要执行的代码写到run函数里面 线程在创建后会直接运行run函数
print "Starting " + self.name
print_time(self.name, self.counter, 5)
print "Exiting " + self.name

#这边表明了在python的一个类中,各个方法不能互相调用;
def print_time(threadName, delay, counter):
while counter:#当counter被减到0的时候退出循环,
if exitFlag:
threading.Thread.exit()
time.sleep(delay)
print "%s: %s" % (threadName, time.ctime(time.time()))
counter -= 1

# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)

# 开启线程
thread1.start()
thread2.start()

print "Exiting Main Thread"#主线程直接运行结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: