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编程中的反模式实例分析
Dec 08 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
win7+Python3.5下scrapy的安装方法
Jul 31 Python
Python可迭代对象操作示例
May 07 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
python图片二值化提高识别率代码实例
Aug 24 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
python中urllib.request和requests的使用及区别详解
May 05 Python
python subprocess pipe 实时输出日志的操作
Dec 05 Python
python小型的音频操作库mp3Play
Apr 24 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 变量未定义等错误的解决方法
2011/01/12 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
JS学习之一个简易的日历控件
2010/03/24 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
python生成密码字典的方法
2018/07/06 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
python二元表达式用法
2019/12/04 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
2020/11/16 HTML / CSS
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
生物科学专业职业规划书范文
2014/02/11 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
晚会闭幕词
2015/01/28 职场文书
奖学金个人总结
2015/03/04 职场文书