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 sys.path详细介绍
Oct 17 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
python 格式化输出百分号的方法
Jan 20 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
Python3.9又更新了:dict内置新功能
Feb 28 Python
Django中使用Json返回数据的实现方法
Jun 03 Python
django使用channels实现通信的示例
Oct 19 Python
python-for x in range的用法(注意要点、细节)
May 10 Python
如何在pycharm中快捷安装pip命令(如pygame)
May 31 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
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
javascript操作元素的常见方法小结
2019/11/13 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
简单讲解Python中的闭包
2015/08/11 Python
Python之用户输入的实例
2018/06/22 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
员工自我鉴定范文
2013/10/06 职场文书
开学典礼演讲稿
2014/05/23 职场文书
公共场所禁烟标语
2014/06/25 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
银行自荐信范文
2015/03/25 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
公司车队管理制度
2015/08/04 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript