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的发展史
Sep 26 Python
Python httplib模块使用实例
Apr 11 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
解决Mac安装scrapy失败的问题
Jun 13 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
pandas.cut具体使用总结
Jun 24 Python
Python调用C语言的实现
Jul 26 Python
python opencv如何实现图片绘制
Jan 19 Python
python实现微信打飞机游戏
Mar 24 Python
Python通过Pillow实现图片对比
Apr 29 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 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程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
很可爱的输入框
2008/08/03 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
JS中的多态实例详解
2017/10/15 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
python基础教程之序列详解
2014/08/29 Python
python创建和删除目录的方法
2015/04/29 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
知识竞赛主持词
2014/03/26 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
市场营销专业自荐书
2014/06/10 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
实习协议书
2015/01/27 职场文书
创建文明城市倡议书
2015/04/28 职场文书
化妆品促销活动总结
2015/05/07 职场文书
纪检监察立案决定书
2015/06/24 职场文书
导游词之吉林花园山
2019/10/17 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
SQL语句多表联合查询的方法示例
2022/04/18 MySQL