加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

关于python多处理的初学者问题?

发布时间:2020-12-20 11:16:01 所属栏目:Python 来源:网络整理
导读:我在要处理的数据库中有许多记录.基本上,我想在文本字符串行的标记和结尾处运行几个正则表达式替换,然后将它们写回数据库. 我想知道多处理是否加快了执行此类任务所需的时间. 我做了一个 multiprocessing.cpu_count 它返回8.我尝试过类似的东西 process = []
我在要处理的数据库中有许多记录.基本上,我想在文本字符串行的标记和结尾处运行几个正则表达式替换,然后将它们写回数据库.

我想知道多处理是否加快了执行此类任务所需的时间.
我做了一个

multiprocessing.cpu_count

它返回8.我尝试过类似的东西

process = []
for i in range(4):
    if i == 3:
        limit = resultsSize - (3 * division)
    else:
        limit = division

    #limit and offset indicates the subset of records the function would fetch in the db
    p = Process(target=sub_table.processR,args=(limit,offset,i,))
    p.start()
    process.append(p)
    offset += division + 1

for po in process:
    po.join()

但显然,所花费的时间高于运行单个线程所需的时间.为什么会这样?有人请指教,这是一个合适的案例,或者我在这里做错了什么?

解决方法

以下是几个问题:

>在您的processR函数中,它是否一次从数据库中篡改大量记录,还是一次取出一行? (每次获取行都非常昂贵,性能明智.)
>它可能不适用于您的特定应用程序,但由于您正在处理“所有内容”,因此使用数据库可能比平面文件慢.数据库针对逻辑查询进行了优化,而非针对序列处理.在您的情况下,您可以将整个表列导出到CSV文件,处理它,然后重新导入结果吗?

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读