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 07 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
Nov 21 Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 Python
基于python requests库中的代理实例讲解
May 07 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
python学生管理系统
Jan 30 Python
使用tqdm显示Python代码执行进度功能
Dec 08 Python
python with (as)语句实例详解
Feb 04 Python
关于python的缩进规则的知识点详解
Jun 22 Python
python 用opencv实现霍夫线变换
Nov 27 Python
Python模拟键盘输入自动登录TGP
Nov 27 Python
python中实现词云图的示例
Dec 19 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
杏林同学录(四)
2006/10/09 PHP
php 清除网页病毒的方法
2008/12/05 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
js控制input输入字符解析
2013/12/27 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
vue刷新和tab切换实例
2018/02/11 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
python3.5仿微软计算器程序
2020/03/30 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
Python阶乘求和的代码详解
2020/02/14 Python
基于python3实现倒叙字符串
2020/02/18 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
python 等差数列末项计算方式
2020/05/03 Python
HTML5制作表格样式
2016/11/15 HTML / CSS
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
《月亮湾》教学反思
2014/04/14 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
大客户经理岗位职责
2015/04/09 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
MySQL时区造成时差问题
2022/04/13 MySQL