一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python實現線程池代碼分享

Python實現線程池代碼分享

2020-07-16 10:52Python教程網 Python

這篇文章主要介紹了Python實現線程池代碼分享,本文直接給出實例代碼,需要的朋友可以參考下

原理:建立一個任務隊列,然多個線程都從這個任務隊列中取出任務然后執行,當然任務隊列要加鎖,詳細請看代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import threading
import time
import signal
import os
 
class task_info(object):
  def __init__(self):
    self.func = None
    self.parm0 = None
    self.parm1 = None
    self.parm2 = None
   
class task_list(object):
  def __init__(self):
    self.tl = []
    self.mutex = threading.Lock()
    self.sem = threading.Semaphore(0)
   
  def append(self, ti):
    self.mutex.acquire()
    self.tl.append(ti)
    self.mutex.release()
    self.sem.release()
   
  def fetch(self):
    self.sem.acquire()
    self.mutex.acquire()
    ti = self.tl.pop(0)   
    self.mutex.release()
    return ti
   
class thrd(threading.Thread):
  def __init__(self, tl):
    threading.Thread.__init__(self)
    self.tl = tl
   
  def run(self):
    while True:
      tsk = self.tl.fetch()
      tsk.func(tsk.parm0, tsk.parm1, tsk.parm2) 
 
class thrd_pool(object):
  def __init__(self, thd_count, tl):
    self.thds = []
     
    for i in range(thd_count):
      self.thds.append(thrd(tl))
   
  def run(self):
    for thd in self.thds:
      thd.start()
       
       
def func(parm0=None, parm1=None, parm2=None):
  print 'count:%s, thrd_name:%s'%(str(parm0), threading.currentThread().getName())
   
def cleanup(signo, stkframe):
  print ('Oops! Got signal %s', signo)
   
  os._exit(0)
   
if __name__ == '__main__':
   
  signal.signal(signal.SIGINT, cleanup)
  signal.signal(signal.SIGQUIT, cleanup)
  signal.signal(signal.SIGTERM, cleanup)
   
  tl = task_list()
  tp = thrd_pool(6, tl)
  tp.run()
   
  count = 0
  while True:
     
    ti = task_info()
    ti.parm0 = count
    ti.func = func
    tl.append(ti)
    count += 1
     
    time.sleep(2)
  pass

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成在线人免费视频一区二区三区 | www.国产在线观看 | 啊好大好爽| 女同全黄h全肉动漫 | 贵妇的私人性俱乐部 | 国产一区二区三区高清视频 | 亚洲男人天堂a | 吉川爱美与黑人解禁 | 激情婷婷综合久久久久 | 爱豆传媒最新视频国产 | chinesemature丰满成熟 | 国产精品美女久久久久 | 色综合天天综合中文网 | 久久九九有精品国产23百花影院 | a∨79成人网| 国产女主播在线播放一区二区 | 美女被爆操 | 毛片小视频| 欧美四区 | 亚洲欧美视频在线播放 | 青春草视频在线免费观看 | 国产成人综合手机在线播放 | 日韩精品国产自在欧美 | 91麻豆精品国产片在线观看 | 精品日本一区二区 | 日韩专区在线观看 | 波多野结衣 在线 | h动态图男女啪啪27报 | 91亚洲成人 | 秋霞717理论片在线观看 | 白丝校花掀起短裙呻吟小说 | 亚洲欧美另类第一页 | 国产精品毛片无码 | 99视频精品免费99在线 | 五月丁香啪啪. | 免费看男人使劲躁女人小说 | 激情亚洲天堂 | 国产高清亚洲 | 99超级碰碰成人香蕉网 | 日本天堂视频 | 大伊香蕉精品二区视频在线 |