bugfix
This commit is contained in:
parent
c07ceea3a2
commit
ed5976fe6b
36
appPublic/process_workers.py
Executable file
36
appPublic/process_workers.py
Executable file
@ -0,0 +1,36 @@
|
||||
import time
|
||||
from multiprocessing import Process
|
||||
import threading
|
||||
import random
|
||||
from appPublic.background import Background
|
||||
|
||||
class ProcessWorkers:
|
||||
def __init__(self, worker_cnt=10):
|
||||
self.semaphore = threading.Semaphore(value=worker_cnt)
|
||||
self.co_worker = 0
|
||||
def _do(self, func, *args, **kwargs):
|
||||
self.semaphore.acquire()
|
||||
self.co_worker += 1
|
||||
p = Process(target=func, args=args, kwargs=kwargs)
|
||||
p.start()
|
||||
p.join()
|
||||
self.co_worker -= 1
|
||||
self.semaphore.release()
|
||||
|
||||
def do(self, func, *args, **kwargs):
|
||||
b = Background(self._do, func, *args, **kwargs)
|
||||
b.start()
|
||||
|
||||
def get_workers(self):
|
||||
return self.co_worker
|
||||
|
||||
if __name__ == '__main__':
|
||||
def k(worker):
|
||||
t = random.randint(1,4)
|
||||
print('current workers=',worker.get_workers(), 'sleep=', t)
|
||||
time.sleep(t)
|
||||
|
||||
w = ProcessWorkers()
|
||||
for i in range(100):
|
||||
w.do(k, w)
|
||||
|
Loading…
Reference in New Issue
Block a user