线程是属于进程的,一个进程可能包含多个线程
至于线程和进程在使用时哪个更好,只能看使用的场景了
话不多说,看下线程模块(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....