线程与进程

xiaoxiao2021-02-28  44

1.线程场景一: import threading import time def run(x):     time.sleep(2)     print(x) t1 = threading.Thread(target=run,args=('x',))     t2 = threading.Thread(target=run,args=('y',))     t1.start() t2.start() 线程场景二: class Mythread(threading.Thread):     def __init__(self,n):         super(Mythread,self).__init__()         self.n = n     def run(self):         print("running task",self.n) t3 = Mythread("t3")         t4 = Mythread("t4")   t3.start() t4.start()    场景三:主线程启动后,和它启动的子线程是并行的,因此主线程启动后,并不会等子线程执行完毕,就继续执行主线程后面的代码    def run(x):     time.sleep(2)     print(x) begin_time = time.time() for i in range(50):     t = threading.Thread(target=run,args=("t %s" %i ,))     t.start() print("all threads is finished") print(time.time() - begin_time)  场景四:通过join等待子线程全部执行完成后,再执行主线程 begin_time = time.time() t_objs = [] for i in range(50):     t = threading.Thread(target=run,args=("t %s" %i ,))     t.start()     t_objs.append(t) for r in t_objs:     r.join()     print("all threads is finished") print(time.time() - begin_time)  2.全局解释器锁

  不管多少核,python都是单核操作,多任务只是个假象  

3.进程

①.io操作不占用CPU,计算占用cpu,如1+1

②.python多线程 不适合cpu密集操作型的任务,适合io操作密集型的任务 ③.python多进程,不同进程的内存独立、数据是不共享的。线程是共享的   每个进程都是有父进程启动的 ④.进程间通讯queue
转载请注明原文地址: https://www.6miu.com/read-2621545.html

最新回复(0)