_thead创建线程

_thread模块

_thread模块
在Python程序中,可以通过两种方式来使用线程:使用函数或者使用类来包装线程对象。当使用thread模块来处理线程时,可以调用里面的函数start_new_thread()来生成一个新的线程,语法格式如下:
_thread.start_new_thread ( function, args,[kwargs] )
其中function是线程函数;args表示传递给线程函数的参数,他必须是个tuple类型;kwargs 是可选参数。


#coding=utf-8

import _thread
import time

def fun1():
    print('开始运行fun1')
    time.sleep(4)
    print('结束运行fun1')

def fun2():
    print('开始运行fun2')
    time.sleep(2)
    print('结束运行fun2')

if __name__=='__main__':
    print('开始运行')
    #启动一个线程运行函数fun1
    _thread.start_new_thread(fun1,())
    #启动一个线程运行函数fun2
    _thread.start_new_thread(fun2,())
    time.sleep(7)
    
结果:
开始运行
开始运行fun1   #在运行fun1的时候由于睡眠时间4秒
开始运行fun2   #在fun1睡眠的4秒时间里CPU时间片被fun2抢占到,开始运行fun2
结束运行fun2   
结束运行fun1

为线程传递参数

#coding=utf-8

import _thread
import time

def fun1(threadname,deplay):
    print('开始运行线程:%s'%threadname)
    time.sleep(deplay)
    print('结束运行线程:%s'%threadname)

def fun2(threadname,deplay):
    print('开始运行线程:%s'%threadname)
    time.sleep(deplay)
    print('开始运行线程:%s'%threadname)

if __name__=='__main__':
    print('主进程开始')
    #创建线程运行fun1
    _thread.start_new_thread(fun1,('thread-1',4))
    _thread.start_new_thread(fun1,('thread-2',2))
    time.sleep(7)
    print('主进程结束')
    
结果:
主进程开始
开始运行线程:thread-1
开始运行线程:thread-2
结束运行线程:thread-2
结束运行线程:thread-1
主进程结束
从输出结果可以看出,由于每个线程函数的休眠时间可能都不相同,所以随机输出了这个结果,每次运行程序,输出的结果是不一样的。

你可能感兴趣的:(_thead创建线程)