如何在Python中的多个进程之间共享单个MySQL数据库连接

2024-03-22

如何创建单个数据库连接并让每个进程与其通信,以最大限度地减少每次迭代生成新连接的开销?

这是一些示例代码来说明我想要做什么:

import multiprocessing
import os.path
import hashlib
import sys


VALID_EXTENSIONS = ('.JPG', '.GIF', '.JPEG')
MAX_FILE_SZ = 1000000

#Declare a global mysql connection

db = MySQLdb.connect(host="localhost",
                     user=config.mysql_user,
                     passwd=config.mysql_pass,
                     db=config.mysql_db)

def md5_file(fname):
    try:
        with open(fname) as fo:
            m = hashlib.md5()
            chunk_sz = m.block_size * 128
            data = fo.read(chunk_sz)
            while data:
                m.update(data)
                data = fo.read(chunk_sz)

        md5_hash = m.hexdigest()
        md5_file.queue.put((fname, md5_hash))

        #DATABASE LOGIC
        cursor = db.cursor()
        cursor.execute("""INSERT INTO ...""")

    except IOError:
        md5_file.queue.put((fname, None))


def is_valid_file(fname):
    ext = os.path.splitext(fname)[1].upper()
    fsz = os.path.getsize(fname)
    return ext in VALID_EXTENSIONS and fsz <= MAX_FILE_SZ


def init(queue):
    md5_file.queue = queue


def main():
    # Holds tuple (fname, md5sum) / md5sum will be none if an IOError occurs
    queue = multiprocessing.Queue()
    pool = multiprocessing.Pool(None, init, [queue])

    for dirpath, dirnames, filenames in os.walk(sys.argv[1]):
        # Convert filenames to full paths...
        full_path_fnames = map(lambda fn: os.path.join(dirpath, fn), 
                               filenames)
        full_path_fnames = filter(is_valid_file, full_path_fnames)
        pool.map(md5_file, full_path_fnames)

    # Dump the queue
    while not queue.empty():
        print queue.get()
    return 0

if __name__ == '__main__':
    sys.exit(main())

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中的多个进程之间共享单个MySQL数据库连接 的相关文章

随机推荐

  • 如何为 ASP.NET MVC 3 + Razor 视图封装可重用的“控件”

    我正在寻找有关如何创建可在多个 MVC 3 视图上使用的可重用 控件 的最佳实践 我可以创建一个 Html 帮助程序扩展方法 以编程方式或使用 razor 中的声明性帮助程序 或者我可以创建一个部分视图 就我而言 诀窍是我需要做的不仅仅是将
  • CSS垂直浮动技术

    垂直浮子是否可以与水平浮子类似地工作 在下面的 Html 中 我希望绿色按钮保持原样 黄色按钮漂浮到灰色形状边缘之外的底部 table style margin 250px width 50px height 100px backgroun
  • python追加到json对象中的数组

    我在 python 中有以下 json 对象 jsonobj a b c var1 d var2 e 我想将键值元素附加到 e 中 但无法弄清楚它的语法 我尝试附加以下内容 但括号和引号的结果不正确 jsobj a b e append f
  • 如何向ListView的列表项添加图标/图像

    我已经使用 arrayadapter 创建了 listview 我将 arrayadapter 添加到包含字符串数组的 listview 但我无法添加图标来 eatch listitem 帮帮我 这里有一个免费摘录 http commons
  • 是否可以禁用隐式 ToString() 调用?

    我想知道是否有办法获得此代码的编译错误 var customer new SomeCustomerClass Console WriteLine Customer address customer 所以我将被迫写这样的东西 var cust
  • 如何创建全局样式表以在 Nx React 项目中共享 scss 变量?

    现在 我真的希望这不是太基于意见 但我只是想在这里提供一些建议 因为我不知道如何开始 我有一个基本的Nx https nx dev 带有 TypeScript React 前端的工作区SCSS https sass lang com 风格
  • 如何使用 ARC 处理“require(..., bail)”语句?

    我正在查看一些示例代码Apple 示例代码中的 Square Cam http developer apple com library ios samplecode SquareCam Introduction Intro html 我想使
  • 获取编辑文本的值错误NULLPOINTER 为什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试从对话框上显示的编辑字段的值获取文本并将其保存在变量中 final Dialog dialog new Dialog contex
  • 在jboss 7.1.1中配置gmail

    我正在使用 jboss 7 1 1 想使用 JavaMail 发送电子邮件 我尝试过以下配置 但出现错误 有人用 Jboss 7 1 1 配置过 gmail 吗
  • 如何从 Java SE 中的 GlassFish 服务器获取初始上下文?

    我有一个如下所示的课程 public class Poligon public static void main String args try Context ctx new InitialContext ConnectionFactor
  • Linux 上的 .NET Core 支持 Visual Basic 吗?

    我搜索了所有 Microsoft 文档 但找不到任何明确说明 Linux 上的 NET Core 是否支持 Visual Basic 的内容 那么 Linux 上的 NET Core 是否支持 Visual Basic 并且是否有适用于 V
  • 如何使用 Xlib 将一个窗口的内容复制到另一个窗口?

    我想使用 Xlib 将现有窗口的内容复制到我自己的窗口 我尝试过 XCopyArea 但它拒绝在两个 Windows 之间复制 我也尝试过 XGetImage 和 XPutImage 但也失败了 将窗口的图形内容复制到我自己的窗口的最佳方法
  • 如何将使用 XIB 的项目转换为 Storyboard?

    我在使用包含导航控制器的 TabBarViewControllers 的项目中有一些复杂的 XIB 文件 从 Xcode 4 2 开始 我无法再有效地编辑这些 XIB 文件 包含的视图控制器是不可见的 仅表示为灰色框 似乎在故事板项目中这是
  • 如何判断网站上是否加载了 Flash?

    我正在对一个非常大的网站进行一些测试 创建了许多不同的开发人员 有没有办法判断网站是否正在使用flash questions tagged flash和 或已加载闪存plugin questions tagged plugin 如果页面使用
  • 有人可以向我解释一下这段代码是如何工作的吗?(如果需要数字值并且用户输入其他输入,则程序再次要求用户输入)

    我正在读一本关于 C 的书 C Primer Plus 并找到了这段代码 该程序的目的是 如果用户希望将数字输入读取到 例如数组 gt 1 将cin重置为新输入2 摆脱错误的输入3 提示用户重试 书上原话 这是代码 gt 从书中复制的确切代
  • iOS - 如何将MapView限制到特定区域?

    我有以下问题 我有一个 绘制的地图 图像 我将其作为叠加层添加到 MapView 中 没问题 但我需要将 MapView 限制在覆盖区域 因此用户无法在该区域之外滚动 缩放 但应该可以在 边界 内滚动 缩放覆盖层的 意味着我不能只禁用 Ma
  • Windows Phone 8 上的 PhoneGap 和外部链接

    我正在尝试使用 Phonegap 在 Windows Phone 8 上设置电子商店应用程序 当客户选择要购买的商品时 他应该被带到 Paypal 窗口 在那里他们可以进行购买 此应用程序不需要购物车功能 我希望在手机上的本机浏览器中打开链
  • iOS 7 自定义字体对齐

    在 iOS 6 上实现应用程序布局时 我使用了自定义 TTF 字体 Gotham 我注意到它的基线总是比常规字体高一点 但只是稍微调整一下以适应 现在我已经更新到 iOS 7 SDK 在 iOS 7 设备上运行时 字体位置更接近常规字体 但
  • .NET 私​​钥 Rsa 加密

    我需要使用 RSA 1 5 算法加密字符串 我已获得私钥 然而 我一生都无法弄清楚如何将这个密钥添加到班级中 看来密钥必须是 RSAParameter 结构类型 然而 这需要一组我尚未给出的值 例如模数 指数 P Q 等 我拥有的只是私钥
  • 如何在Python中的多个进程之间共享单个MySQL数据库连接

    如何创建单个数据库连接并让每个进程与其通信 以最大限度地减少每次迭代生成新连接的开销 这是一些示例代码来说明我想要做什么 import multiprocessing import os path import hashlib import