python 多进程共享变量

现在要读取多个数据文件从中抽取数据将结果合并(相当于word count)


方法一是常规的分多线程分别处理数据输出,最后定义一个字典遍历输出文件将结果集合并

方法二是先定义结果集字典,然后多线程处理数据,放入字典的时候加上同步锁


以为方法二会比方法一快的多 因为省去了大量的IO,只在合并结果的时候加锁

然而测试之后发现同步锁反而是最大的瓶颈


测试20W数据,抽取某个字段开16线程跑,方法一用了10s,方法二用了55s

这差距也太大了……天


所以还是老老实实放弃多线程同步共享变量把 性能太差


python 多线程 加锁同步 共享变量的代码如下

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import MySQLdb
import re
import multiprocessing
import os
import traceback

import jieba
import ConfigParser
import datetime
import json
import logging

def myprocess(num,indir,titles,lock):
		
	try:
		fin = open(indir + os.sep + str(num),'r')
		cnt0 = 0
		for line in fin:
			cnt0 += 1
			if cnt0 %100 == 0:
				print num,cnt0
			
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值