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

python的多线程和多进程程序编程

CPU密集型使用多进程,IO密集型使用多线程

查看进程ID和线程ID的命令分别是os.getpid()和threading.current_thread()

多进程使用multiprocessing就可以了,通常使用进程池来完成操作,阻塞主进程使用join方法

多线程使用threading模块,线程池使用concurrent.futures模块,同时主线程的阻塞方法有多种

不管多进程还是多线程,生产消费模型都可以用队列来完成,如果要用多线程操作同一变量记得加锁

多进程

import multiprocessing

import time

def func1():

for i in range(5):

print(f"进程1:{i}")

time.sleep(1)

def func2():

for i in range(5):

print(f"进程2:{i}")

time.sleep(1)

if __name__ == '__main__':

p1 = multiprocessing.Process(target=func1) 创建一个进程

p2 = multiprocessing.Process(target=func2)创建一个进程

p1.start()

p2.start()

p1.join()

p2.join()

多线程

import threading
import time

def func1():
    for i in range(5):
        print(f"线程1:{i}")
        time.sleep(1)

def func2():
    for i in range(5):
        print(f"线程2:{i}")
        time.sleep(1)

t1 = threading.Thread(target=func1) 创建一个线程
t2 = threading.Thread(target=func2) 创建一个线程
t1.start()
t2.start()
t1.join()
t2.join()

import multiprocessing

def func1(x):

return x * x

if __name__ == '__main__':

pool = multiprocessing.Pool(processes=4) 进程池

results = pool.map(func1, [1, 2, 3, 4, 5])

print(results)

import concurrent.futures

def func1(x):

return x * x

executor = concurrent.futures.ThreadPoolExecutor(max_workers=4) 线程池

futures = [executor.submit(func1, x) for x in [1, 2, 3, 4, 5]]

for future in futures:

print(future.result())

http://www.dtcms.com/a/126845.html

相关文章:

  • 语音识别——根据声波能量、VAD 和 频谱分析实时输出文字
  • 企业数据孤岛如何破
  • Harmony实战之简易计算器
  • AI中的RAG技术:检索增强生成的全面解析
  • Python自动化爬虫:Scrapy+APScheduler定时任务
  • Cesium实现鹰眼图和主地图联动
  • 管道魔法木马利用Windows零日漏洞部署勒索软件
  • 【15】Strongswan watcher详解2
  • 力扣 905 按奇偶排序数组:双指针法的优雅实现
  • 服务器(一种管理计算资源的计算机)
  • 下列软件包有未满足的依赖关系: python3-catkin-pkg : 冲突: catkin 但是 0.8.10-
  • Sping Cloud配置和注册中心
  • 【vLLM 学习】API 客户端
  • 设计模式 - 单例
  • 深入解析 C# 中的模板方法设计模式
  • 分享一些使用DeepSeek的实际案例
  • MCP(2):编写和测试第一个Server
  • CVE-2025-29927 Next.js 中间件鉴权绕过漏洞
  • qPCR实验总被背景荧光干扰?7类探针的“淬灭密码“与避坑指南
  • 【解决方法】VMware 此平台不支持虚拟化Intel VT-x/EPT
  • PT如何得到leakage power
  • 【射频仿真学习笔记】变压器参数的Mathematica计算以及ADS仿真建模
  • 连不上阿里云服务器redis
  • Ansible 使用说明
  • 光储充智能协调控制系统的设计与应用研究
  • SQL注入(SQL Injection)深度解析
  • spark- core
  • 全域数字化:从“智慧城市”到“数字生命体”的进化之路
  • 如何避免无效成本拖垮项目
  • JVM高阶架构:并发模型×黑科技×未来趋势解析