from threading import Thread ==>引入线程(属于一个类)
from multiprocessing import Process ==>引入进程(属于一个类)
import os
def func(num):
print('当前线程{},所归属的进程id号{}'.format(os.getpid(),num))
if __name__=="__main__":
for i in range(10):
# 异步创建10个子线程
t = Thread(target=func,args=(i,))
t.start()
主线程执行任务
print(os.getpid())
## 并发多线程和多进程 , 谁的速度更快? 多线程!
import time
def func(num):
print('当前线程{},所归属的进程id号{}'.format(os.getpid(),num))
if __name__=='__main__':
多线程测试;
#记录开始时间
starttime=time.time()
lst=[]
for i in range(1000):
t=Thread(target=func,args=(i,))
t.start()
lst.append(t)
# 等到所有子线程执行完毕
for i in lst:
i.join()
# 记录结束时间
endtime=time.time()
print("多线程执行时间:",endtime-starttime)
多进程测试:
#记录开始时间
starttime=time.time()
lst=[]
for i in range(1000):
p=Process(target=func,args=(i,))
p.start()
lst.append(p)
# 等到所有子线程执行完毕
for i in lst:
i.join()
# 记录结束时间
endtime=time.time()
print("多进程执行时间:",endtime-starttime)
##多线程 共享同一份进程资源
num =1000
def func():
global num
num -=1
if __name__=="__main__":
for i in range(1000):
t=Thread(target=func)
t.start()
print(num)
##用类定义线程
from threading import Thread
import time
import os
class MyThread(Thread): ===>必须继承父类
def __init__(self,name): ==>如果传参数,必须调用父类的构造方法
# 手动调用父类的构造方法
super().__init__() ==>super()只调用父类
self.name = name
def run(self): ===>run方法不可以乱写还有(handle)
time.sleep(1)
print("当前进程正在执行runing ... " , self.name)
if __name__ == "__main__":
t = MyThread("机器今天会再次爆炸么?")
t.start()
print("主线程执行结束 ... ")