当前位置: 首页 > wzjs >正文

做互联网推广的公司搜索引擎优化的主要策略

做互联网推广的公司,搜索引擎优化的主要策略,物流网站的建设论文,教务系统学生登录入口什么时候需要用到 multiprocessing? 必须记忆的 7 组核心 API 与实战代码1. Process 基本用法(记住两段模板)模板 A:无参函数模板 B:带参函数(注意可 pickle)2. 守护进程 Daemon(后台…

什么时候需要用到 multiprocessing?

  • 必须记忆的 7 组核心 API 与实战代码
    • 1. Process 基本用法(记住两段模板)
      • 模板 A:无参函数
      • 模板 B:带参函数(注意可 pickle)
    • 2. 守护进程 Daemon(后台任务心跳)
    • 3. 优雅退出:join、terminate、exitcode
    • 4. 进程间通信:Queue(生产者-消费者模式)
    • 5. 共享状态:Manager 与 Lock
    • 6. 进程池 Pool(MapReduce 雏形)
    • 7. 自定义 Process 子类(可重用组件)
  • 一张思维导图总结
  • 结语:记忆策略

场景速查表:

场景是否需要 multiprocessing原因
CPU 密集型任务(加密、科学计算、图像处理)✅ 必须GIL 限制,多线程无法并行
I/O 密集型任务(文件、网络)❌ 优先用多线程/异步线程切换开销更小
需要多个 Python 解释器隔离✅ 必须每个进程独立内存空间
需要共享大量复杂对象⚠️ 谨慎进程间共享成本高于线程

结论:只要你要榨干多核 CPU,就绕不开 multiprocessing。否则可以先考虑线程或协程。


必须记忆的 7 组核心 API 与实战代码

下面把「面试时写得出、项目里用得着」的知识点浓缩成一篇 CSDN 风格的速查博客。每个点都给出最小可运行示例(MRE:Minimal Runnable Example),复制即可运行。


1. Process 基本用法(记住两段模板)

模板 A:无参函数

import multiprocessing, timedef worker():print('Worker start', multiprocessing.current_process().name)time.sleep(1)if __name__ == '__main__':p = multiprocessing.Process(target=worker, name='worker-A')p.start()p.join()

模板 B:带参函数(注意可 pickle)

import multiprocessingdef power(base, exp):print(f'{base}^{exp} = {base**exp}')if __name__ == '__main__':for pair in [(2, 10), (3, 5)]:multiprocessing.Process(target=power, args=pair).start()

2. 守护进程 Daemon(后台任务心跳)

import multiprocessing, timedef heartbeat():while True:print('heartbeat', time.strftime('%H:%M:%S'))time.sleep(1)if __name__ == '__main__':d = multiprocessing.Process(target=heartbeat, daemon=True)d.start()time.sleep(3)      # 主进程 3 秒后退出,守护进程随之被杀

3. 优雅退出:join、terminate、exitcode

import multiprocessing, time, signaldef slow():time.sleep(5)if __name__ == '__main__':p = multiprocessing.Process(target=slow)p.start()time.sleep(1)p.terminate()          # 向子进程发 SIGTERMp.join()               # 回收资源print('exitcode:', p.exitcode)   # -15 代表被信号 15 杀死

4. 进程间通信:Queue(生产者-消费者模式)

import multiprocessing, random, timedef producer(q):for i in range(5):q.put(random.randint(1, 100))time.sleep(0.2)def consumer(q):while True:item = q.get()if item is None:          # 毒丸breakprint('Consumed', item)if __name__ == '__main__':q = multiprocessing.Queue()p = multiprocessing.Process(target=producer, args=(q,))c = multiprocessing.Process(target=consumer, args=(q,))p.start(); c.start()p.join()q.put(None)                  # 发毒丸c.join()

5. 共享状态:Manager 与 Lock

import multiprocessingdef add_to_dict(d, key, lock):with lock:                # 防止竞态d[key] = key * keyif __name__ == '__main__':mgr = multiprocessing.Manager()shared_dict = mgr.dict()lock = multiprocessing.Lock()jobs = [multiprocessing.Process(target=add_to_dict, args=(shared_dict, i, lock))for i in range(10)]for j in jobs: j.start()for j in jobs: j.join()print(shared_dict)

6. 进程池 Pool(MapReduce 雏形)

import multiprocessing, osdef square(x):return x * xif __name__ == '__main__':with multiprocessing.Pool(processes=os.cpu_count()) as pool:result = pool.map(square, range(10))print(result)     # [0, 1, 4, 9, ... 81]

7. 自定义 Process 子类(可重用组件)

import multiprocessing, timeclass TimerProcess(multiprocessing.Process):def __init__(self, interval):super().__init__()self.interval = intervaldef run(self):for i in range(3):print(f'{self.name}: {i+1}/{3}')time.sleep(self.interval)if __name__ == '__main__':TimerProcess(1).start()

一张思维导图总结

multiprocessing
├─ 基本对象
│  ├─ Process
│  ├─ Queue / JoinableQueue
│  ├─ Lock / Semaphore / Condition / Event
│  └─ Manager
├─ 高级抽象
│  ├─ Pool
│  └─ 自定义 Process 子类
└─ 生命周期├─ start / join / terminate└─ daemon / exitcode

结语:记忆策略

  1. 先背 3 个模板(Process、Queue、Pool)。
  2. 再背 生命周期:start → join/terminate → exitcode。
  3. 其余 API 用的时候查表即可。

文章转载自:

http://FqRsRqrG.prLgn.cn
http://Ix0mGLLA.prLgn.cn
http://WvBQCkLN.prLgn.cn
http://YiLmzbA4.prLgn.cn
http://mTI3SDWh.prLgn.cn
http://chhyjAB4.prLgn.cn
http://MfmgfNeU.prLgn.cn
http://GFOyO46l.prLgn.cn
http://wi8nVodP.prLgn.cn
http://WNobPCZS.prLgn.cn
http://m1ZqzHMc.prLgn.cn
http://iLzE7j2t.prLgn.cn
http://LCSIZ9GO.prLgn.cn
http://Zut3d6mC.prLgn.cn
http://zBzOrcDi.prLgn.cn
http://pf4qdQPO.prLgn.cn
http://KbbOiw17.prLgn.cn
http://Mwdi8V5i.prLgn.cn
http://Z5kSJOM3.prLgn.cn
http://6uhpenKz.prLgn.cn
http://Drd7QAO7.prLgn.cn
http://PPeiwbmw.prLgn.cn
http://SmOu2XR6.prLgn.cn
http://vCrs5Fjm.prLgn.cn
http://pqssYWh2.prLgn.cn
http://Q4ftiMSN.prLgn.cn
http://YvPCbvdZ.prLgn.cn
http://omOSbbvc.prLgn.cn
http://0bykbAKf.prLgn.cn
http://VRfhgZH6.prLgn.cn
http://www.dtcms.com/wzjs/651663.html

相关文章:

  • 延吉 网站建设南京老牌网站建设公司
  • 公司网站怎么发布文章山东网站建设团队
  • 湛江网站优化青岛苍南网站建设
  • 做网站怎么赚钱吗营销型网站设计方针
  • 做兼职设计去哪个网站迅捷流程图在线制作网站
  • 网站建设 创业wordpress博客主题自媒体
  • 网页网站的区别是什么建筑工程网价是什么意思
  • 静态网站更新单页加盟网站模板
  • 套模板网站价格wordpress html插件安装
  • 太原网站优化怎么做wordpress模板用法
  • 高埗做网站公司网站结构优点
  • 德阳城乡建设部网站首页常州互联网公司排名
  • wordpress清理插件企业如何进行seo
  • 网站建设的实验报告如何给网站做第三方流量监测
  • php网站开发说明文档国家电网公司人力资源招聘平台
  • 网站备案之后wordpress怎么加关键词和描述
  • 中车网站建设的优缺点帮别人做网站 开票内容是什么
  • 西安做网站那家好品牌建设规划方案
  • 公司网站建设及推广刚发布的手机
  • 网站首页怎么做网站开发 播放音频amr
  • 潍坊做网站公司补脾最法拍重庆网站
  • 寮步建设网站公司网站开发怎么做账
  • 瑞安市做网站北京网站建设有限公司
  • 潍坊网站制作推广交互有趣的网站
  • 大龄网站开发人员网络设计师培训平台
  • 营销型网站图片特种作业人员证网上查询
  • 做兼职一般去哪个网站百度网页地图
  • 哪个网站有适合小学生做的题目艺术字体logo设计生成器
  • 360提示危险网站原因北京设计网站
  • 织梦建的网站在哪wordpress 推送插件