python多进程使用函数封装实例


Posted in Python onMay 02, 2020

我就废话不多说了,直接看代码吧!

import multiprocessing as mp
from multiprocessing import Process
class MyProcess(Process):
  """
  自定义多进程,继承自原生Process,目的是获取多进程结果到queue
  """
  def __init__(self, func, args, q):
    super(MyProcess, self).__init__()
    self.func = func
    self.args = args
    self.res = ''
    self.q = q
    #self._daemonic = True
    #self._daemonic = True
 
  def run(self):
    self.res = self.func(*self.args)
    self.q.put((self.func.__name__, self.res))
  
def use_multiprocessing(func_list):
  #os.system('export PYTHONOPTIMIZE=1') # 解决 daemonic processes are not allowed to have children 问题
  q = mp.Queue() # 队列,将多进程结果存入这里,进程间共享, 多进程必须使用 multiprocessing 的queue
  proc_list = []
  res = []
  for func in func_list:
    proc = MyProcess(func['func'], args=func['args'], q=q)
    proc.start()
    proc_list.append(proc)
 
  for p in proc_list:
    p.join()
  while not q.empty():
    r = q.get()
    res.append(r)
  return res

使用时候,将需要多进程执行的函数和函数的参数当作字段,组成个list 传给use_multiprocessing 方法即可

补充知识:python一个文件里面多个函数同时执行(多进程的方法,并发)

看代码吧!

#coding=utf-8
import time
from selenium import webdriver
import threading

def fun1(a):
print a

def fun2():

print 222

threads = []
threads.append(threading.Thread(target=fun1,args=(u'爱情买卖',)))
threads.append(threading.Thread(target=fun2))
print(threads)
if __name__ == '__main__':

for t in threads:


t.setDaemon(True) #我拿来做selenium自动化模拟多个用户使用浏览器的时候,加了这个就启动不了,要去掉


t.start()

import threading

首先导入threading 模块,这是使用多线程的前提。

threads = []
t1 = threading.Thread(target=fun1,args=(u'爱情买卖',))
threads.append(t1)

创建了threads数组,创建线程t1,使用threading.Thread()方法,在这个方法中调用music方法target=music,args方法对music进行传参。 把创建好的线程t1装到threads数组中。

接着以同样的方式创建线程t2,并把t2也装到threads数组。

for t in threads:
t.setDaemon(True)

t.start()

最后通过for循环遍历数组。(数组被装载了t1和t2两个线程)

setDaemon()

setDaemon(True)将线程声明为守护线程,必须在start() 方法调用之前设置,如果不设置为守护线程程序会被无限挂起。子线程启动后,父线程也继续执行下去,当父线程执行完最后一条语句print "all over %s" %ctime()后,没有等待子线程,直接就退出了,同时子线程也一同结束。

start()

开始线程活动。

后记:

搞了个并发浏览器操作,

如果要做参数化,用ddt会导致所有行为都在一个浏览器操作,去掉ddt框架后,并发正常

以上这篇python多进程使用函数封装实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python脚本实现网卡流量监控
Feb 14 Python
Python随机生成信用卡卡号的实现方法
May 14 Python
python实现获取Ip归属地等信息
Aug 27 Python
详解Python进程间通信之命名管道
Aug 28 Python
django中的setting最佳配置小结
Nov 21 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
Python 操作 MySQL数据库
Sep 18 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 #Python
python同时遍历两个list用法说明
May 02 #Python
python多线程实现同时执行两个while循环的操作
May 02 #Python
python 实现两个线程交替执行
May 02 #Python
Python中使用threading.Event协调线程的运行详解
May 02 #Python
浅谈Python3多线程之间的执行顺序问题
May 02 #Python
python继承threading.Thread实现有返回值的子类实例
May 02 #Python
You might like
与文件上传有关的php配置参数总结
2013/06/14 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
Nodejs模块载入运行原理
2018/02/23 NodeJs
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
pyshp创建shp点文件的方法
2018/12/31 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
python标记语句块使用方法总结
2019/08/05 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
Java和Javasciprt的区别
2012/09/02 面试题
软件测试笔试题
2012/10/25 面试题
静心口服夜广告词
2014/03/20 职场文书
物业管理专业求职信
2014/06/11 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
刑事和解协议书范本
2014/11/19 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
西岭雪山导游词
2015/02/06 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP
mysql如何能有效防止删库跑路
2021/10/05 MySQL
实战Python爬虫爬取酷我音乐
2022/04/11 Python
MySQL创建管理子分区
2022/04/13 MySQL
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers