python multi-process parallel code

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)

 

[Renderings unlocked, you will find the number 1 no-show, inter-process resource grab cause]:

 

 

 

After optimization effects:

 

 

Code:

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)

 

Guess you like

Origin www.cnblogs.com/codeDevotee/p/11610759.html