多线程
1 2 3 4 5 6 7 8 9 10 11 | import threading # 这个函数名可随便定义 def run(n): print ( "current task:" , n) if __name__ = = "__main__" : t1 = threading.Thread(target = run, args = ( "thread 1" ,)) t2 = threading.Thread(target = run, args = ( "thread 2" ,)) t1.start() t2.start() |
创建多进程
1 2 3 4 5 6 7 8 9 10 11 | from multiprocessing import Process, Queue def put(queue): queue.put( 'Queue 用法' ) if __name__ = = '__main__' : queue = Queue() pro = Process(target = put, args = (queue,)) pro.start() print (queue.get()) pro.join() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #coding: utf-8 import multiprocessing import time def func(msg): print ( "msg:" , msg) time.sleep( 3 ) print ( "end" ) if __name__ = = "__main__" : # 维持执行的进程总数为processes,当一个进程执行完毕后会添加新的进程进去 pool = multiprocessing.Pool(processes = 3 ) for i in range ( 5 ): msg = "hello %d" % (i) # 非阻塞式,子进程不影响主进程的执行,会直接运行到 pool.join() pool.apply_async(func, (msg, )) # 阻塞式,先执行完子进程,再执行主进程 # pool.apply(func, (msg, )) print ( "Mark~ Mark~ Mark~~~~~~~~~~~~~~~~~~~~~~" ) # 调用join之前,先调用close函数,否则会出错。 pool.close() # 执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束 pool.join() print ( "Sub-process(es) done." ) |
-
CPU 密集型:程序比较偏重于计算,需要经常使用CPU来运算。例如科学计算的程序,机器学习的程序等。
-
I/O 密集型:顾名思义就是程序需要频繁进行输入输出操作。爬虫程序就是典型的I/O密集型程序。
如果程序是属于CPU密集型,建议使用多进程。而多线程就更适合应用于I/O密集型程序。
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律