您的位置:首页 > 汽车 > 时评 > seo推广联系方式_表情包制作小程序_企业官网搭建_故事式软文范例100字

seo推广联系方式_表情包制作小程序_企业官网搭建_故事式软文范例100字

2024/12/25 20:53:37 来源:https://blog.csdn.net/m0_73553411/article/details/144227265  浏览:    关键词:seo推广联系方式_表情包制作小程序_企业官网搭建_故事式软文范例100字
seo推广联系方式_表情包制作小程序_企业官网搭建_故事式软文范例100字
  1. 减少I/O操作:每次写入一行数据会导致频繁的磁盘I/O操作,这会显著降低性能。可以通过批量写入多行数据来减少I/O次数。

  2. 使用更高效的数据结构:在生成随机浮点数时,可以考虑使用NumPy库来生成数组,而不是使用列表推导式,因为NumPy在处理大规模数值计算时效率更高。

  3. 多线程或多进程:利用多线程或多进程来并行生成数据,可以充分利用CPU资源,加快数据生成速度

pro1

Exception in thread Thread-3:
Traceback (most recent call last):
  File "C:\Users\26861\AppData\Local\Programs\Python\Python39\lib\threading.py", line 980, in _bootstrap_inner
    self.run()
  File "d:\.Project\python\venv\lib\site-packages\ipykernel\ipkernel.py", line 766, in run_closure
    _threading_Thread_run(self)
  File "C:\Users\26861\AppData\Local\Programs\Python\Python39\lib\threading.py", line 917, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\26861\AppData\Local\Programs\Python\Python39\lib\multiprocessing\pool.py", line 513, in _handle_workers
    cls._maintain_pool(ctx, Process, processes, pool, inqueue,
  File "C:\Users\26861\AppData\Local\Programs\Python\Python39\lib\multiprocessing\pool.py", line 337, in _maintain_pool
    Pool._repopulate_pool_static(ctx, Process, processes, pool,
  File "C:\Users\26861\AppData\Local\Programs\Python\Python39\lib\multiprocessing\pool.py", line 326, in _repopulate_pool_static
    w.start()
  File "C:\Users\26861\AppData\Local\Programs\Python\Python39\lib\multiprocessing\process.py", line 121, in start
    self._popen = self._Popen(self)
  File "C:\Users\26861\AppData\Local\Programs\Python\Python39\lib\multiprocessing\context.py", line 327, in _Popen
    return Popen(process_obj)
  File "C:\Users\26861\AppData\Local\Programs\Python\Python39\lib\multiprocessing\popen_spawn_win32.py", line 73, in __init__
    hp, ht, pid, tid = _winapi.CreateProcess(
OSError: [WinError 1455] 页面文件太小,无法完成操作。

表明在尝试启动多进程时,系统页面文件(也称为交换文件或虚拟内存)的大小不足以支持当前的操作。

解决方法:

  1. 增加页面文件大小

    • 打开“控制面板” -> “系统和安全” -> “系统” -> “高级系统设置”。
    • 在“性能”部分点击“设置”按钮。
    • 转到“高级”选项卡,点击“更改”按钮。
    • 取消选中“自动管理所有驱动器的分页文件大小”。
    • 选择系统所在的驱动器(通常是C盘),然后选择“自定义大小”,输入初始大小和最大值。建议将最大值设置为物理内存的1.5到2倍。
    • 点击“设置”按钮,然后重启计算机以应用更改。
  2. 减少并发进程数

    • 如果增加页面文件大小不可行,可以尝试减少多进程的数量。例如,如果你使用 multiprocessing.Pool,可以减少 Pool 的大小:

并发逻辑主要使用了 multiprocessing 模块中的 Pool 类来实现多进程并行处理

这里使用了 cpu_count() 函数获取系统中的 CPU 核心数,并创建了一个与 CPU 核心数相同数量的进程池。

使用 pool.map 方法将 generate_random_floats 函数并行应用于多个任务。每个任务生成 num_values_per_line 个随机浮点数。batch_size 是当前批次需要生成的浮点数总数,batch_size // num_values_per_line 计算了需要生成的批次数量。

. 增加批量处理的大小

通过增加每次批量处理的大小,可以减少 I/O 操作的次数,从而提高整体性能。

2. 使用更高效的文件写入方式

当前代码使用 csv.writer 逐行写入数据,这可能会导致频繁的 I/O 操作。可以考虑一次性写入更大的数据块。

3. 并发写入文件

虽然多进程生成数据已经提高了效率,但在写入文件时仍然是单线程操作。可以考虑使用多线程或异步 I/O 来并发写入文件。

4. 优化内存使用

确保生成的数据不会占用过多内存,特别是在生成大文件时。

将 [[value] for value in data_chunk] 改为 [value for value in data_chunk],减少嵌套列表的创建。

  • 内存占用:增大批量处理大小意味着每次生成和处理的数据量更大,这会显著增加内存消耗。如果批量处理的大小过大,可能会导致内存不足,进而引发 MemoryError 或其他内存相关的错误。
  • 解决方案:可以通过监控内存使用情况,逐步增加批量处理的大小,找到一个平衡点,既能提高效率又不会超出系统内存限制。

  • 文件写入压力:虽然减少了 I/O 操作的次数,但每次写入的数据量更大,可能会对磁盘 I/O 造成更大的压力,尤其是在磁盘速度较慢的情况下。
  • 解决方案:可以考虑使用更快的存储介质(如 SSD)或优化文件系统的配置,以减轻 I/O 压力。

pro2

错误提示表明 writer.writerows 方法期望接收一个可迭代对象(例如列表的列表),但实际接收到的是一个浮点数。这通常是因为 data_chunk 中的数据结构不符合预期。

pro3

错误 ValueError: Pool not running 表明在调用 pool.map 时,进程池已经关闭或没有正确启动。从你的代码来看,pool.close() 和 pool.join() 被放在了 while 循环内部,这意味着每次循环迭代都会关闭并等待进程池完成,导致后续的 pool.map 调用失败。

你需要将 pool.close() 和 pool.join() 移动到 while 循环之外,确保进程池在整个数据生成过程中保持运行状态。

  • open(output_file, mode='w', newline=''): 这行代码打开一个文件,文件路径由 output_file 变量指定。mode='w' 表示以写入模式打开文件。如果文件不存在,则会创建一个新文件;如果文件存在,则会清空文件内容。
  • newline='': 这个参数用于控制换行符的行为。在写入 CSV 文件时,设置 newline='' 可以避免在某些操作系统上出现额外的空行。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com