python多线程操作实例
一、python多线程
因为CPython的实现使用了GlobalInterpereterLock(GIL),使得python中同一时刻只有一个线程在执行,从而简化了python解释器的实现,且python对象模型天然地线程安全。如果你想你的应用程序在多核的机器上使用更好的资源,建议使用multiprocessing或concurrent.futures.processpoolexecutor。但是如果你的程序是IO密集型,则使用线程仍然是很好的选择。
二、python多线程使用的两种方法
实例:
importthreading importtime
defworker(num): print(threading.currentThread().getName()+'start') time.sleep(10) print(threading.currentThread().getName()+'running') print(threading.currentThread().getName()+""+str(num)) print(threading.currentThread().getName()+'exit') defdeamon(): print(threading.currentThread().getName()+'start') time.sleep(20) print(threading.currentThread().getName()+'running') print(threading.currentThread().getName()+'exit') print(threading.currentThread().getName())
d=threading.Thread(name='deamon',target=deamon) d.setDaemon(True) d.start()
w=threading.Thread(name='worker',target=worker,args=(10,)) w.start()
classmyWorker(threading.Thread): def__init__(self,num): threading.Thread.__init__(self) self.num=num self.thread_stop=False defrun(self): print(self.getName()+'start') time.sleep(30) print(self.getName()+'running') print(self.getName()+""+str(self.num)) print(self.getName()+'exit') mw=myWorker(30) mw.setName("MyWorker") mw.start()
print(threading.currentThread().getName())
print("Allthreads:") print("------------") forthinthreading.enumerate(): print(th.getName()) print("------------")
d.join() w.join() mw.join()
print(threading.currentThread().getName())