fork download
  1. import random
  2. import time
  3. from queue import Queue, Empty
  4. from threading import Thread, RLock
  5. from typing import *
  6.  
  7.  
  8. def worker(worker_id: int, queue: Queue):
  9. while True:
  10. try:
  11. job: dict = queue.get_nowait()
  12. # print(f'worker: {worker_id}, start: {job}')
  13. time.sleep(job['sleep_time'])
  14. print(f'worker: {worker_id}, done: {job}')
  15. except Empty:
  16. break
  17.  
  18.  
  19. if __name__ == '__main__':
  20. queue: Queue = Queue()
  21. for i in range(100):
  22. queue.put({'i': i, 'sleep_time': random.random()})
  23.  
  24. threads: List[Thread] = [
  25. Thread(target=worker, args=(i, queue))
  26. for i in range(10)
  27. ]
  28. for t in threads:
  29. t.start()
  30. for t in threads:
  31. t.join()
  32.  
Success #stdin #stdout 0.04s 13436KB
stdin
Standard input is empty
stdout
worker: 4, done: {'i': 4, 'sleep_time': 0.1190537854445084}
worker: 9, done: {'i': 9, 'sleep_time': 0.2831895508459492}
worker: 9, done: {'i': 11, 'sleep_time': 0.03407831928370719}
worker: 7, done: {'i': 7, 'sleep_time': 0.46423227749632445}
worker: 4, done: {'i': 10, 'sleep_time': 0.422698656037347}
worker: 6, done: {'i': 6, 'sleep_time': 0.7795298685796432}
worker: 2, done: {'i': 2, 'sleep_time': 0.8213166640299344}
worker: 5, done: {'i': 5, 'sleep_time': 0.8258648877389372}
worker: 1, done: {'i': 1, 'sleep_time': 0.8375964051807036}
worker: 2, done: {'i': 16, 'sleep_time': 0.04539666928485253}
worker: 0, done: {'i': 0, 'sleep_time': 0.8752572432924572}
worker: 3, done: {'i': 3, 'sleep_time': 0.8847384796855582}
worker: 8, done: {'i': 8, 'sleep_time': 0.9615285309281928}
worker: 3, done: {'i': 21, 'sleep_time': 0.10786827997776594}
worker: 4, done: {'i': 14, 'sleep_time': 0.6427290770081047}
worker: 5, done: {'i': 17, 'sleep_time': 0.36286534269548576}
worker: 6, done: {'i': 15, 'sleep_time': 0.46358207720405553}
worker: 0, done: {'i': 20, 'sleep_time': 0.37501886050284583}
worker: 9, done: {'i': 12, 'sleep_time': 0.9650495143477665}
worker: 4, done: {'i': 24, 'sleep_time': 0.13710647995060476}
worker: 9, done: {'i': 28, 'sleep_time': 0.0562329040456665}
worker: 7, done: {'i': 13, 'sleep_time': 0.8975392905931452}
worker: 3, done: {'i': 23, 'sleep_time': 0.37820382189992263}
worker: 6, done: {'i': 26, 'sleep_time': 0.1766533609522064}
worker: 0, done: {'i': 27, 'sleep_time': 0.21274464027246898}
worker: 9, done: {'i': 30, 'sleep_time': 0.12454579343051209}
worker: 1, done: {'i': 18, 'sleep_time': 0.75335533703337}
worker: 0, done: {'i': 34, 'sleep_time': 0.14505479977936298}
worker: 4, done: {'i': 29, 'sleep_time': 0.3039357628277144}
worker: 7, done: {'i': 31, 'sleep_time': 0.3034551085677951}
worker: 9, done: {'i': 35, 'sleep_time': 0.339463095283412}
worker: 2, done: {'i': 19, 'sleep_time': 0.9505456611149937}
worker: 4, done: {'i': 38, 'sleep_time': 0.1985191495299392}
worker: 2, done: {'i': 41, 'sleep_time': 0.04127451504785673}
worker: 8, done: {'i': 22, 'sleep_time': 0.9084315261038017}
worker: 0, done: {'i': 37, 'sleep_time': 0.27255239721582536}
worker: 8, done: {'i': 44, 'sleep_time': 0.11312012903763657}
worker: 3, done: {'i': 32, 'sleep_time': 0.626149239229614}
worker: 6, done: {'i': 33, 'sleep_time': 0.5925510156498375}
worker: 5, done: {'i': 25, 'sleep_time': 0.9295740239466654}
worker: 2, done: {'i': 43, 'sleep_time': 0.2679113629878932}
worker: 4, done: {'i': 42, 'sleep_time': 0.3327648889554272}
worker: 8, done: {'i': 46, 'sleep_time': 0.29717291342354024}
worker: 5, done: {'i': 49, 'sleep_time': 0.22768047867932428}
worker: 6, done: {'i': 48, 'sleep_time': 0.3661688153085588}
worker: 0, done: {'i': 45, 'sleep_time': 0.5073817975524009}
worker: 9, done: {'i': 40, 'sleep_time': 0.5947387604999841}
worker: 4, done: {'i': 51, 'sleep_time': 0.24004274828780803}
worker: 1, done: {'i': 36, 'sleep_time': 0.8703016141031553}
worker: 7, done: {'i': 39, 'sleep_time': 0.933883436677214}
worker: 5, done: {'i': 53, 'sleep_time': 0.34444017185209574}
worker: 6, done: {'i': 54, 'sleep_time': 0.42842162458333133}
worker: 7, done: {'i': 59, 'sleep_time': 0.3201417625803006}
worker: 2, done: {'i': 50, 'sleep_time': 0.8340954451651892}
worker: 3, done: {'i': 47, 'sleep_time': 0.970319072584274}
worker: 4, done: {'i': 57, 'sleep_time': 0.5683302787581613}
worker: 5, done: {'i': 60, 'sleep_time': 0.32172570164165537}
worker: 4, done: {'i': 65, 'sleep_time': 0.18600942353354566}
worker: 8, done: {'i': 52, 'sleep_time': 0.918337001911597}
worker: 0, done: {'i': 55, 'sleep_time': 0.8521576034656579}
worker: 9, done: {'i': 56, 'sleep_time': 0.8719213033800806}
worker: 6, done: {'i': 61, 'sleep_time': 0.48710085952247983}
worker: 2, done: {'i': 63, 'sleep_time': 0.33716345286522154}
worker: 1, done: {'i': 58, 'sleep_time': 0.8435823295016792}
worker: 7, done: {'i': 62, 'sleep_time': 0.517299857462933}
worker: 5, done: {'i': 66, 'sleep_time': 0.5363420574816228}
worker: 3, done: {'i': 64, 'sleep_time': 0.63790326438312}
worker: 6, done: {'i': 71, 'sleep_time': 0.3767226433606732}
worker: 9, done: {'i': 70, 'sleep_time': 0.4752699604933637}
worker: 0, done: {'i': 69, 'sleep_time': 0.5381220492971711}
worker: 8, done: {'i': 68, 'sleep_time': 0.6897599659303496}
worker: 7, done: {'i': 74, 'sleep_time': 0.4528003474093497}
worker: 7, done: {'i': 81, 'sleep_time': 0.01624000314448304}
worker: 3, done: {'i': 76, 'sleep_time': 0.45101180100291116}
worker: 7, done: {'i': 82, 'sleep_time': 0.1576164486564976}
worker: 1, done: {'i': 73, 'sleep_time': 0.7681408769682899}
worker: 6, done: {'i': 77, 'sleep_time': 0.4033138042718397}
worker: 4, done: {'i': 67, 'sleep_time': 0.9752697678933933}
worker: 3, done: {'i': 83, 'sleep_time': 0.09786309234367252}
worker: 5, done: {'i': 75, 'sleep_time': 0.6889284097193147}
worker: 2, done: {'i': 72, 'sleep_time': 0.9508756056917221}
worker: 0, done: {'i': 79, 'sleep_time': 0.5099151371150936}
worker: 1, done: {'i': 85, 'sleep_time': 0.2513675085209853}
worker: 6, done: {'i': 86, 'sleep_time': 0.25317323096760813}
worker: 1, done: {'i': 92, 'sleep_time': 0.053505927060234826}
worker: 9, done: {'i': 78, 'sleep_time': 0.6456281811090073}
worker: 8, done: {'i': 80, 'sleep_time': 0.5066680327103338}
worker: 8, done: {'i': 96, 'sleep_time': 0.15906167525171078}
worker: 5, done: {'i': 89, 'sleep_time': 0.36965073246682933}
worker: 4, done: {'i': 87, 'sleep_time': 0.6357699805297716}
worker: 6, done: {'i': 93, 'sleep_time': 0.4635121413232953}
worker: 7, done: {'i': 84, 'sleep_time': 0.8455276879197802}
worker: 8, done: {'i': 97, 'sleep_time': 0.36718341163075074}
worker: 3, done: {'i': 88, 'sleep_time': 0.8139649761756628}
worker: 4, done: {'i': 99, 'sleep_time': 0.23745559890085965}
worker: 1, done: {'i': 94, 'sleep_time': 0.7187361625705909}
worker: 0, done: {'i': 91, 'sleep_time': 0.8157976287803238}
worker: 2, done: {'i': 90, 'sleep_time': 0.8968471651497626}
worker: 9, done: {'i': 95, 'sleep_time': 0.9247248714762822}
worker: 5, done: {'i': 98, 'sleep_time': 0.7879074928546015}