多过程500个事件10乘10?

2024-04-19 00:23:10 发布

您现在位置:Python中文网/ 问答频道 /正文

大家晚上好

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

这是我现在处理的方式

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()

通常进程数在500个左右。函数get\u file\u mp相当繁重,因此当所有内容都在内存中时,计算机会受到很大影响。这就是为什么我想有一个方法来执行这些进程10乘10或50乘50,因为我注意到计算机能够处理这一负载的工作


Tags: 内存getsettings进程def计算机方式args
1条回答
网友
1楼 · 发布于 2024-04-19 00:23:10

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

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

如果您真的想批处理事件,我个人不希望批处理事件,而是尝试“实时”优化它们的执行

相关问题 更多 >