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

广州seo网站推广顾问网上推广手段包括

广州seo网站推广顾问,网上推广手段包括,wordpress 显示访客数,深圳正规煤气公司一、什么是进程? 进程(Process):操作系统分配资源的最小单位。每个运行中的程序就是一个进程。线程(Thread):进程内最小的执行单元,可看作轻量级进程。 💡 Python 的多…

一、什么是进程?

  • 进程(Process):操作系统分配资源的最小单位。每个运行中的程序就是一个进程。
  • 线程(Thread):进程内最小的执行单元,可看作轻量级进程。

💡 Python 的多线程受 GIL 限制,在 CPU 密集型任务中难以实现真正的并行。多进程是绕过 GIL、充分利用多核 CPU 的推荐方式。


二、基础用法:multiprocessing.Process

1. 创建进程

from multiprocessing import Process
import os, timedef task():time.sleep(2)print('子进程ID:', os.getpid())if __name__ == '__main__':print('主进程ID:', os.getpid())processes = []for _ in range(10):p = Process(target=task)p.start()processes.append(p)for p in processes:p.join()

2. 常用参数和方法

属性 / 方法说明
target执行函数
args / kwargs传参
start()启动进程
join(timeout)阻塞等待
is_alive()是否仍在运行
terminate()终止进程
daemon设置是否为守护进程
pid / exitcode进程 ID / 退出码

三、进程池:multiprocessing.Pool

1. 创建进程池并提交任务

from multiprocessing import Pool
import timedef task(name):time.sleep(2)print(f"{name} 执行完毕")if __name__ == '__main__':pool = Pool(processes=4)for i in range(6):pool.apply_async(task, args=(f"任务{i}",))  # 非阻塞方式pool.close()pool.join()

2. 方法说明

方法描述
apply()阻塞提交
apply_async()非阻塞提交,支持回调函数
close() / join()关闭进程池 / 等待结束

四、进程间通信

1. 使用 Pipe(管道)

from multiprocessing import Pipe, Processdef send_data(conn, data):conn.send(data)def receive_data(conn):print(conn.recv())if __name__ == '__main__':conn1, conn2 = Pipe()Process(target=send_data, args=(conn1, 'Hello')).start()Process(target=receive_data, args=(conn2,)).start()

2. 使用 Queue(队列)

from multiprocessing import Queue, Processdef set_data(q, val):q.put(val)def get_data(q):print(q.get())if __name__ == '__main__':q = Queue()Process(target=set_data, args=(q, '数据')).start()Process(target=get_data, args=(q,)).start()

五、进程同步(锁)

1. 不加锁的输出(可能混乱)

from multiprocessing import Process
import os, timedef task():print(f"{os.getpid()} start")time.sleep(2)print(f"{os.getpid()} end")for _ in range(3):Process(target=task).start()

2. 加锁保证输出顺序

from multiprocessing import Process, Lock
import os, timedef task(lock):with lock:print(f"{os.getpid()} start")time.sleep(2)print(f"{os.getpid()} end")if __name__ == '__main__':lock = Lock()for _ in range(3):Process(target=task, args=(lock,)).start()

六、共享状态

1. 使用共享内存:ValueArray

from multiprocessing import Process, Value, Arraydef modify(shared_num, shared_arr):shared_num.value = 100.5for i in range(len(shared_arr)):shared_arr[i] = -shared_arr[i]if __name__ == '__main__':num = Value('d', 0.0)arr = Array('i', range(5))p = Process(target=modify, args=(num, arr))p.start()p.join()print(num.value)print(arr[:])

2. 使用 Manager 提供的共享对象

from multiprocessing import Process, Managerdef modify(shared_dict, shared_list):shared_dict[1] = '一'shared_list.reverse()if __name__ == '__main__':with Manager() as manager:d = manager.dict()l = manager.list(range(5))p = Process(target=modify, args=(d, l))p.start()p.join()print(d)print(l)

七、实战总结

应用场景推荐方案原因说明
CPU 密集型任务多进程绕过 GIL,真正多核并行
I/O 密集型任务多线程 / 协程利用线程或异步释放等待时间
多任务并发管理进程池(Pool)简化进程创建与调度,避免资源浪费
多进程通信Pipe / Queue实现进程间数据传输
状态共享Value / Array / Manager灵活、安全地在进程间共享数据

八、推荐阅读

  • 📚 官方文档:multiprocessing — Process-based parallelism
http://www.dtcms.com/wzjs/606220.html

相关文章:

  • php开源网站 网上商城网站降权后 换域名
  • 网站图片少影响seo吗建设单位网站设计
  • 校园网站安全建设方案深圳品牌公寓
  • 山东网站制作推荐百度手机助手应用商店
  • django网站开发流程网络营销的策划方案
  • 微信做单网站礼品网站商城怎么做
  • 寿光专业做网站的公司c2m模式的电商平台有哪些
  • 企业建立网站毛站
  • 做音乐网站要注意什么指数查询
  • 凡科建站的建站后如何管理怎么做qq空间支付网站
  • 专门做mmd的网站县城服务网站如何做
  • 通过门户网站做单点登录SAP北京电商网站建设
  • 网站建设服务器的搭建方式自己搭建公司网站
  • 手机网站开源系统渭南做网站公司
  • 网站404页面在哪查看有什么做节能报告的网站
  • 租赁空间网站建设做网站用什么语言数据库
  • 南阳建网站公司北京网络公司信息
  • 企业建站报价方案网站维护是做什么的
  • 企业网站建设实训报告体会截图域名网站.
  • 微信公众号建立网站襄樊北京网站建设
  • 网站怎样做谷歌推广广州企业搜索引擎优化服务
  • 做t恤的网站梵克雅宝官网编号查询
  • 中心城网站建设页面设计读书笔记1500
  • 贸易公司寮步网站建设极致发烧以网络营销为主题的论文
  • 襄阳网站建设兼职程序员做网站美工能过关吗
  • 国外网站怎么打开网络营销优化外包
  • 松江做网站费用做外贸网站推广的步骤
  • 怎样在网站上做免费的推广京东网站建设目标
  • 网站设计 app开发梧州网站开发
  • 做板子焊接的网站的公司名字网站 备案 初审