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执行外部程序的常用方法小结
Mar 21 Python
对python3 sort sorted 函数的应用详解
Jun 27 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
python json.dumps中文乱码问题解决
Apr 01 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
简单的命令查看安装的python版本号
Aug 28 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
Python ellipsis 的用法详解
Nov 20 Python
python和opencv构建运动检测器的实现
Mar 03 Python
一篇文章带你搞懂Python类的相关知识
May 20 Python
Python函数中apply、map、applymap的区别
Nov 27 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超级全局变量数组小结
2012/10/04 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
uni-app实现点赞评论功能
2019/11/25 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
Python对切片命名的实现方法
2018/10/16 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
python已协程方式处理任务实现过程
2019/12/27 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
2014年管理人员工作总结
2014/12/01 职场文书
团委工作总结2015
2015/04/02 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
Python一行代码实现自动发邮件功能
2021/05/30 Python
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python