多核cpu在pycharm中使用multiprocessing创建多进程不会同时执行的原因。

本文介绍了一个使用Python的multiprocessing模块创建多进程的示例。通过定义一个子类MyProcess继承自Process,实现了自定义的多进程任务。文章展示了如何启动和等待多个进程,并解释了在PyCharm和CMD中执行的不同表现。
代码:

import time
from multiprocessing import Process


class MyProcess(Process):
    def __init__(self):
        super(MyProcess, self).__init__()

    def run(self):
        time.sleep(1)
        print('hello', self.name, time.ctime())


if __name__ == '__main__':
    process_list = []
    for i in range(5):
        p = MyProcess()
        process_list.append(p)
        p.start()

    for p in process_list:
        p.join()

在pycharm中执行结果:
这是因为multiprocessing模块不支持交互模式。只有在 cmd 里头输入 python xxx.py 来运行起来,你就可以看到子进程的执行了。
在cmd中执行结果:
### 提高PyCharm运行程序时的CPU利用率 当遇到PyCharm中Python脚本运行效率低下,特别是CPU利用率高的情况时,可以考虑以下几个方面来优化性能: #### 调整JVM参数配置 默认情况下,JetBrains IDEs(包括PyCharm)启动时使用的Java虚拟机(JVM)可能并未针对高性能计算场景做最优设置。通过调整IDE本身的JVM选项,能够有效提升其响应速度以及内部操作的速度。 编辑`idea.vmoptions`文件(位于PyCharm安装目录下),增加如下几项配置[^2]: ```properties -server -Xms1g -Xmx4g -XX:ReservedCodeCacheSize=512m ``` 这些设置指定了更大的堆空间和其他资源预留量给到IDE本身,从而减少因垃圾回收等原因造成的阻塞现象。 #### 修改解释器线程数 对于多核处理器而言,默认单一线程执行可能会造成大量闲置核心无法得到有效利用。可以通过修改Python解释器的相关环境变量或命令行参数来指定并发度更高的模式。 例如,在Linux/MacOS环境下可尝试设置`OMP_NUM_THREADS`环境变量控制OpenMP并行区域的最大可用线程数量;而在Windows上则可通过`setx OMP_NUM_THREADS "N"`永久生效此更改(N代表想要启用的具体数目)[^3]. 另外一种方法是在代码层面引入多进程或多线程编程模型,比如使用标准库中的`multiprocessing`, `concurrent.futures`模块实现任务分发与结果收集逻辑: ```python from concurrent.futures import ProcessPoolExecutor, as_completed def task(x): return sum(i * i for i in range(int(1e7))) if __name__ == '__main__': with ProcessPoolExecutor(max_workers=4) as executor: futures = {executor.submit(task, n):n for n in range(8)} total = 0 for future in as_completed(futures): try: result = future.result() print('Task {} completed'.format(futures[future])) total += result except Exception as exc: print('%r generated an exception: %s' %(futures[future],exc)) print("Total:",total) ``` 这段代码展示了如何创建一个由四个工作进程组成的池,并向其中提交多个耗时的任务实例。每个子进程中独立完成各自的运算部分后再汇总最终的结果集。 #### 配置硬件加速支持 某些特定类型的科学计算、机器学习框架等依赖于底层硬件特性提供更高效的矩阵运算能力。确保已正确安装相应版本的NumPy包及其配套BLAS/LAPACK库,以便充分发挥现代CPU架构的优势[^1]. 如果项目涉及深度学习领域,则还需确认CUDA Toolkit及相关驱动程序均已妥善部署完毕,使得TensorFlow/PyTorch等工具链能够在必要时刻切换至GPU路径处理密集型数据流转换作业。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值