首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多处理500件大事10件×10件?

多处理500件大事10件×10件?
EN

Stack Overflow用户
提问于 2015-01-09 01:32:20
回答 1查看 30关注 0票数 0

大家晚上好,

我想同时运行大约500个进程,并决定编写一个池来管理这项工作。然而,它非常重,内存看起来不像它将处理它。是否建议打开/使用将执行进程10×10或50×50的池?谢谢

这是我现在处理的方式。

代码语言:javascript
复制
def get_data_mp(args):
    settings = args

    procs = len(settings.ticker_list)
    pool = multiprocessing.Pool(procs)
    tickers = pool.map(get_file_mp, [(settings,i) for i in range(procs)])
    pool.close()
    pool.join()

通常情况下,procs的数量约为500。因此,当内存中的所有东西都在内存中时,计算机遭受了很大的损失。这就是为什么我希望有一种方法来执行这些进程10乘10或50乘50,因为我注意到计算机能够处理这种工作量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-09 01:43:48

我将创建两个线程,一个是事件队列线程,另一个是事件调度线程。

  • 事件队列线程是500个进程将事件发送到的位置。一旦它成为一件事,它就睡着了。
  • 事件队列线程将等待到作业的阈值或上次事件分派发生后的一段时间。你的门槛是10或50或任何你想要的。
  • 在达到此阈值或时间时,它将批处理10或50事件,并将它们传递给作业分派线程,然后再次进入休眠状态。
  • 您的事件分派线程将迭代事件并为每个事件调用处理程序,然后再次进入休眠状态。

这就是如果您真的想要批处理过程事件,我个人更不愿意对它们进行批处理,并尝试以“实时”的方式优化它们的执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27852525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档