python之线程(threading)

线程是属于进程的,一个进程可能包含多个线程

至于线程和进程在使用时哪个更好,只能看使用的场景了

话不多说,看下线程模块(threading)的使用方法:

#导入模块
import threading,os,time,random

#创建一个测试函数subFunc
def subFunc(param,ppid):
    sleepTime = random.randint(1,10)
    print('Begin %s subProcess,and will wait %s,subPID is %s,mainPID is %s,threadName is %s'%(param,sleepTime,os.getpid(),ppid,threading.current_thread().name))
    time.sleep(sleepTime)
    print('End %s subProcess...'%param)

if __name__ == '__main__':
    param = 5
    print('Begin main process...')
    threadingList = []
    for i in range(5):
        t = threading.Thread(target=subFunc,args=(i+1,os.getpid()),name='T'+ str(i))
        t.start()
        threadingList.append(t)
    for t in threadingList:
        t.join()
    print('End main process...')

和进程的写法类似,都是先创建,在启动,最后加一个join等待所有线程结束在结束整个进程,如下为执行结果:

我们可以看到,pid和主进程中是保持一致的,线程的名称在创建线程时改成了T+i,所以显示为T0,T1....,如果不改名字,默认为Thread-1,Thread-2....

猜你喜欢

转载自www.cnblogs.com/watertaro/p/9292052.html