其中线程标识符是一个非0整数,并没有直接意思,可以当作从一个线程组成的特殊字典中索引本线程的一个key,也可用_thread.get_ident()得到,在线程退出后,标识符会被系统回收。在线程执行过程中可以调用_thread.exit()终止本线程的执行。
import _thread
import time
def threadFunction(count):
for i in range(count):
print('进程id为%d的打印%d'%(_thread.get_ident(),i))
i-=1
time.sleep(0.1)
def begin():
ident1=_thread.start_new_thread(threadFunction,(100,))
print('启动标识符为%d的进程'%(ident1,))
ident2=_thread.start_new_thread(threadFunction,(100,))
print('启动标识符为%d的进程'%(ident2,))
if __name__ == '__main__':
begin()
二.使用Thread类来实现多线程,这种方式是对_thread模块(如果没有_thread,则为dummy_threading)的高级封装,在这种方式下我们需创建新类继承threading.Thread,和java一样重写threading.Thread的run方法即可.启动线程用线程的start方法,它会调用我们重写的run方法.
class MyThread(threading.Thread):
'''只能重写__init__ 和 run 两个方法'''
def __init__(self,name):
threading.Thread.__init__(self)
self.name=name
self.bool_stop=False
def run(self):
while not self.bool_stop:
print('进程%s,于%s'%(self.name,time.asctime()))
time.sleep(1)
def stop(self):
self.bool_stop = True
if __name__ == '__main__':
th1=MyThread('one')
th2=MyThread('two')
th1.start()
th2.start()