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程序设计入门(5)类的使用简介
Jun 16 Python
利用python代码写的12306订票代码
Dec 20 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
Python实现的异步代理爬虫及代理池
Mar 17 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
python 同时读取多个文件的例子
Jul 16 Python
Python上下文管理器用法及实例解析
Nov 11 Python
使用TensorFlow-Slim进行图像分类的实现
Dec 31 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
Python基础之元组与文件知识总结
May 19 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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操作xml代码
2010/06/17 PHP
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
基于php权限分配的实现代码
2013/04/28 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
JavaScript编写推箱子游戏
2015/07/07 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
Python中import机制详解
2017/11/14 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
Python Django 命名空间模式的实现
2019/08/09 Python
社区国庆节活动方案
2014/02/05 职场文书
企业安全生产承诺书
2014/05/22 职场文书
陪护人员误工证明
2015/06/24 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
关于分班的感言
2015/08/04 职场文书
交通事故责任认定书
2015/08/06 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
Python anaconda安装库命令详解
2021/10/16 Python