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进阶教程之函数对象(函数也是对象)
Aug 30 Python
Python将阿拉伯数字转换为罗马数字的方法
Jul 10 Python
Python温度转换实例分析
Jan 17 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
PyQt5组件读取参数的实例
Jun 25 Python
django如何实现视图重定向
Jul 24 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
使用python+poco+夜神模拟器进行自动化测试实例
Apr 23 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
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
各种快递查询--Api接口
2016/04/26 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
豆瓣网的jquery代码实例
2008/06/15 Javascript
基于jquery的表格排序
2010/09/11 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
浅谈struts1 & jquery form 文件异步上传
2017/05/25 jQuery
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
详解Django模版中加载静态文件配置方法
2019/07/21 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
Python如何访问字符串中的值
2020/02/09 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
印度网上药店:1mg
2017/10/13 全球购物
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
某科技软件测试面试题
2013/05/19 面试题
感恩老师演讲稿600字
2014/08/28 职场文书
初一数学教学反思
2016/02/17 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android