<p>子类线程。线程并将您的工作函数作为run()的一部分放入该类中。在</p>
<pre><code>import threading
import time
import random
class Worker(threading.Thread):
def __init__(self, srcfile, printlock,**kwargs):
super(Worker,self).__init__(**kwargs)
self.srcfile = srcfile
self.lock = printlock # so threads don't step on each other's prints
def run(self):
with self.lock:
print("starting %s on %s" % (self.ident,self.srcfile))
# do whatever you need to, return when done
# example, sleep for a random interval up to 10 seconds
time.sleep(random.random()*10)
with self.lock:
print("%s done" % self.ident)
def threadme(srcfiles):
printlock = threading.Lock()
threadpool = []
for file in srcfiles:
threadpool.append(Worker(file,printlock))
for thr in threadpool:
thr.start()
# this loop will block until all threads are done
# (however it won't necessarily first join those that are done first)
for thr in threadpool:
thr.join()
print("all threads are done")
if __name__ == "__main__":
threadme(["abc","def","ghi"])
</code></pre>
<p>根据要求,要限制线程数,请使用以下命令:</p>
^{pr2}$
<p>注意,这实际上将反向处理源代码(由于list pop())。如果您要求按顺序执行,请在某处反转列表,或使用deque和popleft()。在</p>