#创建10个线程并启动from threading import Thread
import time
from nt import getpid
deffun(n):print('子线程 的 进程号:',getpid())
time.sleep(0.1)print(n)if __name__ =='__main__':print('主线程 的 进程号:',getpid())#主线程与子线程在同一个进程中for i inrange(10):#开启10个线程
t =Thread(target=fun,args =(i,))#创建线程对象,传递参数
t.start()#启动线程对象#创建并调用线程的方式一# 主线程 的 进程号: 6440# 子线程 的 进程号: 6440# 子线程 的 进程号: 6440#...#...# 0# 1# 5# 4# 3# 2# 9# 7
from threading import Thread
import time
classMyThread(Thread):defrun(self):
time.sleep(0.1)print(1)if __name__ =='__main__':#创建并调用线程的方式二
t = MyThread()
t.start()
import time
import threading
#threading.current_thread() 获取当前线程的名字与iddefwahaha(n):
time.sleep(0.5)print(n,threading.current_thread(),threading.get_ident())for i inrange(10):
threading.Thread(target=wahaha,args=(i,)).start()print(threading.active_count())# 获取所有的线程数量(包括主线程)print(threading.current_thread())# 主线程对象print(threading.enumerate())#获取所有线程对象组成的列表#11 线程数为11#<_MainThread(MainThread, started 8944)> 主线程对象#[<_MainThread(MainThread, started 8944)>, ...] 线程对象组成的列表#0 <Thread(Thread-1, started 1600)> 1600#2 <Thread(Thread-3, started 8392)> 8392#1 <Thread(Thread-2, started 6000)> 6000#7 <Thread(Thread-8, started 7588)> 7588#5 <Thread(Thread-6, started 8940)> 8940#....
多线程与多进程的效率
同时开启10个线程和10个进程模拟文件下载
from multiprocessing import Process
from threading import Thread
import time
defdownfile(s):print(s,'号文件开始下载')
time.sleep(1)#休眠1秒print(s,'号文件下载结束')
开启多进程的效率
if __name__ =='__main__':
starttime = time.time()
l =[]for i inrange(10):#开启10个进程
p = Process(target=downfile,args=(i,))
p.start()#启动进程
l.append(p)for i in l:
i.join()#等待子进程对象执行结束
end = time.time()- starttime
print('进程耗时 :',end)#进程耗时# 0 号文件开始下载# 1 号文件开始下载# 3 号文件开始下载#....# 8号文件下载结束# 6 号文件下载结束# 进程耗时 : 1.4079999923706055
print('---------------------------------------')
starttime2 = time.time()
l =[]for i inrange(10):#开启10个线程
t =Thread(target=downfile,args =(i,))#创建线程,传递参数
t.start()#启动线程
l.append(t)#添加线程对象for j in l:
j.join()#等待线程执行结束
end2 = time.time()- starttime2
print('线程耗时 :',end2)#线程耗时#线程耗时 : 1.004000186920166