菜鸟多线程.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # -*- coding: UTF-8 -*-
  2. '''
  3. import _thread
  4. import time
  5. # 为线程定义一个函数
  6. def print_time( threadName, delay):
  7. count = 0
  8. while count < 5:
  9. time.sleep(delay)
  10. count += 1
  11. print ("%s: %s" % ( threadName, time.ctime(time.time()) ))
  12. # 创建两个线程
  13. try:
  14. _thread.start_new_thread( print_time, ("Thread-1", 2, ) )
  15. _thread.start_new_thread( print_time, ("Thread-2", 4, ) )
  16. except:
  17. print ("Error: 无法启动线程")
  18. while 1:
  19. pass
  20. '''
  21. """
  22. import threading
  23. import time
  24. def thread_job():
  25. # print(f"This Thread_job num: {threading.current_thread()}")
  26. print('T1 Start\n')
  27. for i in range(10):
  28. time.sleep(0.2)
  29. print('T1 END\n')
  30. def thread_job2():
  31. print('T2 Start\n')
  32. print('T2 Finish\n')
  33. def main():
  34. added_thread = threading.Thread(target=thread_job,name='T1')
  35. added_thread2 = threading.Thread(target=thread_job2,name="T2")
  36. added_thread.start()
  37. added_thread2.start()
  38. added_thread2.join()
  39. added_thread.join()
  40. print("ALL Done")
  41. # print(threading.active_count())
  42. # print(threading.enumerate())
  43. # print(threading.current_thread())
  44. """
  45. # import threading
  46. # from queue import Queue
  47. # def job(l,q):
  48. # for i in range(len(l)):
  49. # l[i] = l[i] **2
  50. # q.put(l)
  51. # def mutl_threading():
  52. # q = Queue()
  53. # threads = []
  54. # data = [[1,2,3],[3,4,5],[5,6,7],[7,7,8]]
  55. # for i in range(4):
  56. # t = threading.Thread(target=job,args=(data[i],q))
  57. # t.start()
  58. # threads.append(t)
  59. # for thread in threads:
  60. # thread.join()
  61. # results = []
  62. # for _ in range(4):
  63. # results.append(q.get())
  64. # print(results)
  65. # if __name__ == '__main__':
  66. # mutl_threading()
  67. import threading
  68. def job1():
  69. global A
  70. global lock
  71. # lock.acquire()
  72. for i in range(10):
  73. A += 1
  74. print(f'job1 {A}\n')
  75. # lock.release()
  76. def job2():
  77. global A
  78. global lock
  79. lock.acquire()
  80. for i in range(10):
  81. A += 10
  82. print('job2\t',A,'\n')
  83. lock.release()
  84. if __name__ == '__main__':
  85. A = 0
  86. lock = threading.Lock()
  87. t1 = threading.Thread(target=job1)
  88. t2 = threading.Thread(target=job2)
  89. t1.start()
  90. t2.start()
  91. t1.join()
  92. t2.join()