0

Is there anything in Python that allows you to run multiple concurrent Python programs that could potentially access the same database table and to prevent each program from using the full cpu and thereby allow the server to have some additional capacity left over?

4

1 回答 1

1

几个问题:

  1. 多个并发 Python 程序 - 请参阅http://wiki.python.org/moin/Concurrency,一开始我会尝试使用内置模块多处理(http://docs.python.org/2/library/multiprocessing.html
  2. 访问同一个数据库表——每个进程都应该创建自己的数据库连接——在该并发由/或在 rdbms 和/或连接/查询选项中配置之后。如果您真的需要在进程之间同步 - 使用锁/信号量可能会有所帮助。
  3. 防止每个程序使用完整的 cpu - 这取决于您的进程应该做什么,我会选择:
    • 拥有一个始终运行的主程序(主进程)、暂停(time.sleep、gevent.sleep 或类似的)并产生和控制产生的进程(工作进程)
    • 生成的进程完成工作(工作人员) - 打开新连接,执行数据库操作并退出

我确信多处理(或其他)模块提供的一些工作流/系统可以满足您的需求(工作者、池、队列、管道、共享状态、同步......)。

于 2013-05-09T20:23:52.483 回答