btf/btfhive/lab/randomChoose.py (39 lines of code) (raw):

# -*- coding: utf-8 -*- # cython:language_level=3 """ ------------------------------------------------- File Name: randomChoose Description : Author : liaozhaoyan date: 2022/1/21 ------------------------------------------------- Change Activity: 2022/1/21: ------------------------------------------------- """ __author__ = 'liaozhaoyan' import os import time from random import shuffle from multiprocessing import Process from threading import Thread class workProc(Process): def __init__(self, index): super(workProc, self).__init__() self._index = index def run(self): print(f"pid {os.getpid()}, {self._index}") time.sleep(self._index / 10) def work(self): self.start() self.join() class dispathThread(Thread): def __init__(self, L): super(dispathThread, self).__init__() self._L = L def run(self): while True: try: cell = self._L.pop() except IndexError: return w = workProc(cell) w.work() if __name__ == "__main__": L = list(range(20)) shuffle(L) ts = [] for i in range(4): ts.append(dispathThread(L)) for t in ts: t.start() for t in ts: t.join() pass