fork download
  1. import threading
  2. import time
  3.  
  4.  
  5. CLOCKPERIOD = 0.10 # decrease for speed!
  6. USE_GIL = False # For more speed
  7. ONE = 1
  8.  
  9.  
  10. def threetimer():
  11. while True:
  12. yield 3.0
  13.  
  14.  
  15. def fivetimer():
  16. while True:
  17. yield 5.0
  18.  
  19.  
  20. def fifteentimer():
  21. while True:
  22. yield 15.0
  23.  
  24.  
  25. def numtimer():
  26. while True:
  27. yield 1.0
  28.  
  29.  
  30. def newlinetimer():
  31. while True:
  32. yield 1.0
  33.  
  34.  
  35. def numprinter(starttime):
  36. i = ONE
  37. for delay in numtimer():
  38. time.sleep(delay * CLOCKPERIOD)
  39. if time.time() > starttime + 100.5 * CLOCKPERIOD:
  40. break
  41. print(str(i), end='')
  42. i = i + ONE
  43.  
  44.  
  45. def threeprinter(starttime):
  46. for delay in threetimer():
  47. time.sleep(delay * CLOCKPERIOD)
  48. if time.time() > starttime + 100.5 * CLOCKPERIOD:
  49. break
  50. print('\rFIZZ', end='')
  51.  
  52.  
  53. def newlineprinter(starttime):
  54. for delay in newlinetimer():
  55. time.sleep(delay * CLOCKPERIOD)
  56. if time.time() > starttime + 100.5 * CLOCKPERIOD:
  57. break
  58. print('')
  59.  
  60.  
  61. def fiveprinter(starttime):
  62. for delay in fivetimer():
  63. time.sleep(delay * CLOCKPERIOD)
  64. if time.time() > starttime + 100.5 * CLOCKPERIOD:
  65. break
  66. print('\rBUZZ', end='')
  67.  
  68.  
  69. def fifteenprinter(starttime):
  70. for delay in fifteentimer():
  71. if time.time() > starttime + 100.5 * CLOCKPERIOD:
  72. break
  73. time.sleep(delay * CLOCKPERIOD)
  74. print('\rFIZZBUZZ', end='')
  75.  
  76.  
  77. if __name__ == '__main__':
  78. p = threading.Thread(target=numprinter, kwargs={'starttime': time.time()})
  79. p3 = threading.Thread(target=threeprinter, kwargs={'starttime': time.time()})
  80. p2 = threading.Thread(target=newlineprinter, kwargs={'starttime': time.time()})
  81. p4 = threading.Thread(target=fiveprinter, kwargs={'starttime': time.time()})
  82. p5 = threading.Thread(target=fifteenprinter, kwargs={'starttime': time.time()})
  83. p.start()
  84. time.sleep(CLOCKPERIOD * 0.10)
  85. p3.start()
  86. time.sleep(CLOCKPERIOD * 0.10)
  87. p4.start()
  88. time.sleep(CLOCKPERIOD * 0.10)
  89. p5.start()
  90. time.sleep(CLOCKPERIOD * 0.10)
  91. p2.start()
  92. p.join()
  93. p2.join()
  94. p3.join()
  95. p4.join()
  96. p5.join()
  97. print('')
Success #stdin #stdout 0.04s 52232KB
stdin
Standard input is empty
stdout
1
2
3
FIZZ
4
5
BUZZ
6
FIZZ
7
8
9
FIZZ
10
BUZZ
11
12
FIZZ
13
14
15
FIZZ
BUZZ
FIZZBUZZ
16
17
18
FIZZ
19
20
BUZZ
21
FIZZ
22
23
24
FIZZ
25
BUZZ
26
27
FIZZ
28
29
30
FIZZ
BUZZ
FIZZBUZZ
31
32
33
FIZZ
34
35
BUZZ
36
FIZZ
37
38
39
FIZZ
40
BUZZ
41
42
FIZZ
43
44
45
FIZZ
BUZZ
FIZZBUZZ
46
47
48
FIZZ
49
50
BUZZ
51
FIZZ
52
53
54
FIZZ
55
BUZZ
56
57
FIZZ
58
59

FIZZ60
BUZZ
FIZZBUZZ
61
62

FIZZ63
64
65
BUZZ

FIZZ66
67
68

FIZZ69
70
BUZZ
71

FIZZ72
73
74

FIZZ75
BUZZ
FIZZBUZZ
76
77

FIZZ78
79
80
BUZZ

FIZZ81
82
83

FIZZ84
85
BUZZ
86

FIZZ87
88
89

FIZZ90
BUZZ
FIZZBUZZ
91
92

FIZZ93
94
95
BUZZ

FIZZ96
97
98

FIZZ99
100
BUZZ
FIZZBUZZ