当前位置: 首页 > 面试题库 >

运行多个并发Python程序以访问同一数据库表

娄鹤轩
2023-03-14
问题内容

Python中是否有任何东西可以允许您运行多个并发的Python程序,这些程序可能访问同一数据库表,并防止每个程序使用完整的cpu,从而使服务器剩下一些额外的容量?


问题答案:

几个问题:

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

我确定多处理(或其他)模块提供的某些工作流程/系统可以满足您的需求(工作人员,池,队列,管道,共享状态,同步等)。



 类似资料:
  • 问题内容: 我同时运行10个PHP脚本,并且在Linux上在后台处理。 例如: 在中,我遇到了数据库循环问题。其中一个进程可能已经将该字段更新为1,似乎其他php脚本进程没有看到它。例如: 如何确保流程不会再次重做相同的数据? 问题答案: 当您有多个流程时,您需要让每个流程都拥有某些记录集的“所有权”。通常,您可以通过使用limit子句进行更新,然后选择脚本“拥有”的记录来完成此操作。 例如,有一

  • 问题内容: JVM是否可以同时运行多个程序?如果是这样,怎么办?如果没有,为什么? 要运行程序,我们只需 但是我们可以使用同一个JVM实例来运行另一个程序吗? 问题答案: 答案取决于您对“程序”的定义。具有方法并以其开头的Java程序通常无法在同一JVM中运行,因为没有内置的资源或名称空间分隔。例如,如果两个程序使用同一库的冲突版本怎么办? 我们还提供了旨在共享JVM的应用程序,例如企业应用程序。

  • 问题内容: 所有,我必须创建一个具有基本架构的数据库。该数据库将很大(超过100GB),并将用作数据仓库。现在,该数据库的创建当前正在通过C#代码“一次命中”执行。从许多不同的来源中提取数据。由于数据量巨大,这种创建引起了一些问题。已经决定,与其一口气创建一个数据库,不如一次创建一个数据库。到 创建几个包含核心数据表的较小数据库。 将较小的数据库合并为一个较大的数据库。 建立架构/添加相关约束。

  • 在我的数据库中,某个表的许多记录需要我的java spring应用程序不时处理。该表的每一行都有一个布尔标志,表示当前是否正在处理给定的记录。 我所看到的是在不同的服务器上多次部署我的java spring应用程序,全部访问同一个共享数据库,用一些负载平衡器复制同一个应用程序,等等。 但是,一次只有一个 Java 应用程序实例可以处理该特定表的给定数据库记录。 有哪些不同的方法来加强这种约束? 我

  • 问题内容: 我有一个待办事项列表类型应用程序,可将所有注释数据存储在sqlite3数据库中。应用程序中的每个活动都需要访问数据库以实时编辑数据的不同部分。 当前,我让每个活动都打开自己的DBManager对象(我创建的用于管理数据库的帮助程序类)。但是,这导致了问题,我想要一个稍微更全局的访问解决方案,因此我不必继续打开/关闭/创建数据库。 我正在考虑几种选择,并且希望听到每种选择的利弊以及其他建

  • 问题内容: 我可以使用一台可以访问10个内核的机器-我想实际使用它们。我习惯在自己的机器上做的事情是这样的: 我要执行10个文件-我们将其称为blah00.fa,blah01.fa,… blah09.fa。 这种方法的问题在于,myProgram一次仅使用1个内核,并且在多核计算机上这样做,我将一次使用10个内核,因此我不会使用mahcine来其最大能力。 如何更改脚本,以使其同时运行所有10个.