0

我目前的任务是连续运行一个 Python 程序,这将是一个 cron 作业类型的事情,在内部它将有每 24 小时更新一次的对象,然后基本上将详细信息写入文件中。

关于内存管理需要一些建议

  1. 我应该使用单进程还是多线程。因为程序中有一个范围可以并行完成。由于它将连续运行,因此需要对这些线程的内存消耗进行一些澄清,我还需要在每次执行后清理线程的资源。是否有任何清理方法可用于 python 中的线程。

  2. 当我在 Python 中进行对象分配时,我是否还需要考虑析构函数,或者 Python 会执行 gc。

请分享您对此的想法以及最佳方法。

4

1 回答 1

5

你的问题似乎有误会。

cron 作业是按给定时间间隔运行的计划任务。除了在启动时启动之外,不需要安排连续运行的程序。

首先,Python 中的多线程会受到GIL的影响,因此除非您调用多线程感知库函数,或者您的计算受 I/O 限制(通常被磁盘访问、网络访问等输入/输出阻塞),否则会释放GIL,使用线程只会获得微不足道的收益。您应该考虑使用multiprocessing包进行并行计算。当使用 OpenMP 或使用基于任务的并行框架(例如SCOOPCelery )编译库时,其他选项是基于 NumPy 的计算。

正如评论中所述,内存管理是内置在 Python 中的,除了删除未使用的实例或元素之外,您不必担心它。Python 会自动为每个没有绑定任何变量的元素垃圾收集程序,因此请务必删除它们或让它们相应地超出范围。

在旁注中,要小心 Python 中的对象析构函数,它们往往表现出与其他面向对象语言不同的行为。我建议你在使用它们之前阅读这个问题。

于 2012-09-06T15:09:03.277 回答