python多进程并行代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python多进程并行代码相关的知识,希望对你有一定的参考价值。

from multiprocessing import Process
import sys, os
import time


def timetask(string):
  while True:
    print(string)


def works(func, arg, worknum):
  proc_record = []
  for i in range(worknum):
    p = Process(target = func, args = (i,))
    p.start()
    proc_record.append(p)
  for p in proc_record:
    p.join()


if __name__ == \'__main__\':
  arg = 5
  procs = 4
  works(timetask, arg, procs)

 

效果图【未加锁,会发现数字1没出现,进程间资源抢夺导致】:

 

 

 

优化之后效果:

 

 

代码:

from multiprocessing import Process
import sys, os
import time
from threading import Lock


def timetask(string):
  mutex.acquire()
  while True:
    print(string)
    if mutex.locked():
      mutex.release()


mutex = Lock()

def works(func, arg, worknum):
  proc_record = []
  for i in range(worknum):
    p = Process(target = func, args = (i,))
    p.start()
    proc_record.append(p)
  for p in proc_record:
    p.join()


if __name__ == \'__main__\':
  arg = 5
  procs = 4
  works(timetask, arg, procs)

 

以上是关于python多进程并行代码的主要内容,如果未能解决你的问题,请参考以下文章

python 多进程,多线程,协程

如何在 python 中并行化以下代码片段?

python中的多线程和多进程编程

超简单的Python教程系列——第16篇:多进程

python进程不能并行的原因,进程阻塞

python之多进程