day10_多进程、协程
import multiprocessing
import time
def test():
time.sleep(2)
print('over')
if __name__ == '__main__': # windows必须加上这行,要不然会报错,mac不用加
for i in range(5):
p = multiprocessing.Process(target=test)
p.start()
while len(multiprocessing.active_children()) != 0: # 等待子进程结束
pass
print(multiprocessing.cpu_count()) # 打印cpu的核数
print(multiprocessing.current_process()) # 打印当前的进程,打印出<_MainProcess(MainProcess, started)>
print('哈哈')
多线程:
适用于IO密集型任务,IO密集型(频繁的操作IO),包括网络IO和磁盘IO,网络上传下载,磁盘读写
多进程:
适用于CPU密集型任务,能利用多核CPU,查询表里的数据来排序就是cpu在工作
简单点说协程是进程和线程的升级版,进程和线程都面临着内核态和用户态的切换问题而耗费许多切换时间,而协程就是用户自己控制切换的时机,不再需要陷入系统的内核态