python多进程使用函数封装的方法

  介绍

这篇文章主要讲解了python多进程使用函数封装的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

我就废话不多说了,直接看代码吧!

进口多处理为议员
  从多处理导入过程
  类MyProcess(过程):
  “““
  自定义多进程,继承自原生过程,目的是获取多进程结果到队列中
  “““
  def __init__(自我、函数参数q):
  超级(MyProcess自我). __init__ ()
  自我。func=函数
  自我。args=参数
  自我。res=& # 39; & # 39;
  自我。q=问
  #自我。_daemonic=True
  #自我。_daemonic=True
  
  def运行(自我):
  自我。res=self.func (* self.args)
  self.q.put (self.func。__name__, self.res))
  
  def use_multiprocessing (func_list):
  # os.system(& # 39;出口PYTHONOPTIMIZE=1 & # 39;) #解决恶魔的过程是不允许有孩子问题
  q=mp.Queue() #队列,将多进程结果存入这里,进程间共享,多进程必须使用多处理的队列
  proc_list=[]
  res=[]
  在func_list func:
  proc=MyProcess (func (& # 39; func # 39;], arg游戏=func (& # 39; args # 39;], q=问)
  proc.start ()
  proc_list.append(触发)
  
  在proc_list: p
  p.join ()
  虽然不是q.empty ():
  r=q.get ()
  res.append(右)
  返回res 

使用时候,将需要多进程执行的函数和函数的参数当作字段,组成传个列表给use_multiprocessing方法即可

<强> python一个文件里面多个函数同时执行(多进程的方法,并发)

看代码吧!

 #=utf - 8编码
  导入的时间
  从硒进口webdriver
  进口线程
  
  def fun1(一个):
  打印一个
  
  def fun2 ():
  打印222
  
  线程=[]
  threads.append (threading.Thread(目标=fun1 args=(u # 39;爱情买卖& # 39;,)))
  threads.append (threading.Thread(目标=fun2))
  打印(线程)
  if __name__==& # 39; __main__ # 39;:
  在线程t:
  t.setDaemon (True) #我拿来做硒自动化模拟多个用户使用浏览器的时候,加了这个就启动不了,要去掉
  t.start ()
  
  进口线程

首先导入螺纹模块,这是使用多线程的前提。

 t的线程:
  t.setDaemon(真正的)
  t.start () 

最后通过对循环遍历数组。(数组被装载了t1和t2两个线程)

<代码> setDaemon()

setDaemon(真正的)将线程声明为守护线程,必须在开始()方法调用之前设置,如果不设置为守护线程程序会被无限挂起。子线程启动后,父线程也继续执行下去,当父线程执行完最后一条语句打印“在% s"% ctime()后,没有等待子线程,直接就退出了,同时子线程也一同结束。

<代码> start()

开始线程活动。

<强>后记:

搞了个并发浏览器操作,

如果要做参数化,用ddt会导致所有行为都在一个浏览器操作,去掉ddt框架后,并发正常

看完上述内容,是不是对python多进程使用函数封装的方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。

python多进程使用函数封装的方法