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 27 Python
用Python从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
简单介绍Python中利用生成器实现的并发编程
May 04 Python
python实现kNN算法
Dec 20 Python
Python 统计字数的思路详解
May 08 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
Python读取xlsx文件的实现方法
Jul 04 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
python绘制简单直方图(质量分布图)的方法
Apr 21 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实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
php中的登陆login实例代码
2016/06/20 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
js常用函数 不错
2006/09/08 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
php中and 和 &&出坑指南
2018/07/13 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
使用python实现飞机大战游戏
2020/03/23 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
元旦活动感言
2014/03/08 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
师德师风承诺书
2014/05/23 职场文书
525心理活动总结
2014/07/04 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
奖励通知
2015/04/22 职场文书