介绍

优化上一个挑战中的计算器,支持使用多进程的方式对员工工资数据进行处理,以应对文件数据量很大的情况下,提高计算效率。

程序的执行过程如下,注意配置文件和输入的员工数据文件需要你自己创建并填入数据,可以参考上述的内容示例:

执行成功不需要输出信息到屏幕,执行失败或有异常出现则将错误信息输出到屏幕。

需要注意的是必须包含下列的处理方式:

  1. 启动三个进程,使用进程 1 读取员工工资数据,使用进程 2 计算个税及社保,使用进程 3 将数据写入到输出的工资单数据文件中。
  2. 三个进程负责不同的工作,进程之间使用某种机制进行通信。

目标
完成任务需要达成的目标:

  1. 程序存放的位置 /home/shiyanlou/calculator.py
  2. 程序必须采用多进程的方式处理员工工资数据,并保证进程间能够同步

提示语

下述实现方案仅供参考,会涉及到先前实验中学习到的知识点,如果自己对程序有足够的理解也可以不按照下述提示编写

  • 基于 multiprocessing 模块实现多进程

  • 基于 Queue 实现进程间通信

  • 实现完成后,可以考虑是否可以在计算环节的进程2实现为一个进程池?

  • 实现方案可以考虑定义 queue1 和 queue2,实现三个进程如下:

    • 进程 1:从用户文件中读取数据,然后得到一个列表 data,第一项是用户 ID,第二项是税前工资,然后使用 queue1.put(data)。
    • 进程 2:queue1.get() 得到列表 data,第一项是用户 ID,第二项是税前工资,然后计算后生成新的列表。 newdata,包含社保,个税,税后工资等数据,然后使用 queue2.put(newdata)。
    • 进程 3:queue2.get() 得到列表 newdata,包含用户 ID,税前工资,社保,个税,税后工资等数据,然后写入文件。

最后,因为后续的挑战将会用到现在写的代码,请使用 下载代码 保存到本地或者提交到自己的 Github。

知识点

  • Python3 多进程
  • 进程间通信
  • 函数

通过代码如下:(注意,本代码并没有使用到Value进程同步以及加锁,还有进程池也没加进去)

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
import sys
import csv
import time
from multiprocessing import Process,Queue,Value,Lock,Poolclass Brgs:def __init__(self):   l = sys.argv[1:]self.c = l[l.index('-c')+1]self.d = l[l.index('-d')+1]self.o = l[l.index('-o')+1]class Config:def __init__(self):self.config = self._read_config()def _read_config(self):d = {'s': 0}with open(brgs.c) as f1:for line in f1.readlines():m = line.split('=')a, b = m[0].strip(), m[1].strip()if a == 'JiShuL' or a == 'JiShuH':d[a] = float(b)else:d['s'] += float(b)return ddef f2(q2,q1):#pool = Pool(processes=3)for a,b in q1.get():   salary = int(b)shebao = salary * config['s']if salary < config['JiShuL']:shebao = config['JiShuL'] * config['s']if salary > config['JiShuH']:shebao = config['JiShuH'] * config["s"]m = salary - shebao - 3500if m <= 0:shui = 0elif m <= 1500:shui = m * 0.03elif m <= 4500:shui = m * 0.1-105elif m <= 9000:shui = m * 0.2-555elif m <= 35000:shui = m * 0.25-1005elif m <= 55000:shui = m * 0.3-2755elif m <= 80000:shui = m * 0.35-5505else:shui = m * 0.45-13505shuihou = salary - shebao - shuinewdata1 = [a,salary, format(shebao, '.2f'), format(shui, '.2f'), format(shuihou, '.2f')]time.sleep(0.01)newdata.append(newdata1)#p=pool.apply(f5,(newdata1,))#pool.close()#pool.join()q2.put(newdata)#def f5(n1):#newdata2 =newdata.append(n1)#return(newdata2)def f1(q1):with open(brgs.d) as f:data = list(csv.reader(f))q1.put(data)def f3(q2):with open(brgs.o, 'w') as f:for w in q2.get():      csv.writer(f).writerow(w)def main():Process(target=f1, args=(queue1,)).start()Process(target=f2, args=(queue2, queue1)).start()Process(target=f3, args=(queue2,)).start()if __name__ == '__main__':queue1 = Queue()queue2 = Queue()brgs = Brgs()config = Config().confignewdata = []main()

python实现多进程工资计算器相关推荐

  1. python制作工资计算器-Python计算个人所得税

    不知道大家有没有细心观察自己工资条上个人所得税呢?很多人都觉得有专门的个人所得税计算器,不用再去复查,但是有的黑心的公司专门利用这种心理,偶尔增加你的扣税额,为了方便大家核查自己的个人所得税,我用Py ...

  2. python制作工资计算器-Python制作个税计算器

    不知道大家有没有细心观察自己工资条上个人所得税呢?很多人都觉得有专门的个人所得税计算器,不用再去复查,但是有的黑心的公司专门利用这种心理,偶尔增加你的扣税额,为了方便大家核查自己的个人所得税,我用Py ...

  3. python制作工资计算器-Python实现扣除个人税后的工资计算器示例

    本文实例讲述了Python实现扣除个人税后的工资计算器.分享给大家供大家参考,具体如下: 正好处于找工作期间避免不了会跟单位谈论薪资的情况,当然所有人跟你谈的都是税前收入,税后应该实际收入有多少呢?今 ...

  4. python计算每月工资-Python实现扣除个人税后的工资计算器示例

    本文实例讲述了Python实现扣除个人税后的工资计算器.分享给大家供大家参考,具体如下: 正好处于找工作期间避免不了会跟单位谈论薪资的情况,当然所有人跟你谈的都是税前收入,税后应该实际收入有多少呢?今 ...

  5. python计算工资编程-Python实现扣除个人税后的工资计算器示例

    本文实例讲述了Python实现扣除个人税后的工资计算器.分享给大家供大家参考,具体如下: 正好处于找工作期间避免不了会跟单位谈论薪资的情况,当然所有人跟你谈的都是税前收入,税后应该实际收入有多少呢?今 ...

  6. 新版个人所得税计算python_2019年新税率工资计算器(python脚本) | linux系统运维...

    #!/usr/bin/evn python # coding=utf-8 # 2019年新税率个人所得税计算器,本脚本仅供学习 # blog: http://www.linuxyw.com # aut ...

  7. 用python计算工资工资_python练习-工资计算器

    python练习-工资计算器 源代码如下: #! /usr/bin/env python def get_user_salary_sum(): salary = (raw_input("Pl ...

  8. python制作工资计算器-Python计算个人所得税!

    不知道大家有没有细心观察自己工资条上个人所得税呢?很多人都觉得有专门的个人所得税计算器,不用再去复查,但是有的黑心的公司专门利用这种心理,偶尔增加你的扣税额,为了方便大家核查自己的个人所得税,我用Py ...

  9. python实验楼工资计算器_挑战:完善工资计算器

    完善工资计算器 项目需求改变: 输出税后工资 计算过程需要扣除社会保险费用 支持多人同时计算工资 打印税后工资列表 个税计算公式: 应纳税所得额 = 工资金额 - 各项社会保险费 - 起征点(3500 ...

最新文章

  1. BZOJ3823 : 定情信物
  2. 使用MNIST数据集,在TensorFlow上实现基础LSTM网络
  3. 1150 Travelling Salesman Problem (25 分)【难度: 难 / 知识点: 图 模拟 未完成】
  4. 算法与数据结构 -- 栈与队列(四)
  5. iOS版微信6.3.19更新发朋友圈可选可见范围
  6. [pytorch、学习] - 5.1 二维卷积层
  7. 【LeetCode】智商题 brainteaser(共3题)
  8. nc的java插件_如何配置协同平台NC系统插件 原来是这样的
  9. Matlab如何在一个窗口绘制多张子图
  10. Android AsyncTask的使用及泛式参数
  11. python爬数据处理\ufeff、\xa0、\u3000的方法 (转载)
  12. windows聚焦壁纸不更新_Win10系统下聚焦锁屏壁纸无法自动更换怎么解决
  13. Excel函数中$符号是什么意思?
  14. 位移传递率matlab编程,机械振动设计计算与VB编程实例
  15. 卡通渲染技巧(一)——漫反射部分
  16. 数据分析师三个等级_【数据分析课|这三个等级的数据分析师报考条件,一定是你需要的】- 环球网校...
  17. .netCore在Linux容器上的发布
  18. DNS——简介及正向解析、反向解析
  19. 樊顺厚 - 高等数学视频及目录笔记
  20. Python输出斐波那契数列【递归、迭代】

热门文章

  1. Linux系统——程序员跳槽必备
  2. python图片转换成文字的手机软件_手机如何将图片转换成文字?用这两种方法转换很简单...
  3. AD中更改原理图图纸大小
  4. Ubuntu 图文安装教程------2020年最新版
  5. Java进程CPU使用率高排查
  6. 为什么罗永浩这种人都能做出来锤子手机?
  7. 除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?
  8. 是终点也是起点:你的恋爱目标是什么?
  9. matlab 读ctl,用matlab将nc数据读出来,写成二进制文件,然后用grads画图
  10. 内存走线 菊花链_[转帖]关于DDR4内存颗粒、单双面、主板布线和双通道的那些事儿...