为什么不能用python_为什么我不能用python加入这个线程?
我正在寫一個多線程類。該類有一個parallel_process()函數(shù),該函數(shù)被并行任務(wù)重寫。要處理的數(shù)據(jù)放入queue。每個線程中的worker()函數(shù)一直調(diào)用parallel_process(),直到queue為空。結(jié)果放入results隊列對象中。類定義是:import threading
try:
from Queue import Queue
except ImportError:
from queue import Queue
class Parallel:
def __init__(self, pkgs, common=None, nthreads=1):
self.nthreads = nthreads
self.threads = []
self.queue = Queue()
self.results = Queue()
self.common = common
for pkg in pkgs:
self.queue.put(pkg)
def parallel_process(self, pkg, common):
pass
def worker(self):
while not self.queue.empty():
pkg = self.queue.get()
self.results.put(self.parallel_process(pkg, self.common))
self.queue.task_done()
return
def start(self):
for i in range(self.nthreads):
t = threading.Thread(target=self.worker)
t.daemon = False
t.start()
self.threads.append(t)
def wait_for_threads(self):
print('Waiting on queue to empty...')
self.queue.join()
print('Queue processed. Joining threads...')
for t in self.threads:
t.join()
print('...Thread joined.')
def get_results(self):
results = []
print('Obtaining results...')
while not self.results.empty():
results.append(self.results.get())
return results
我用它來創(chuàng)建一個并行任務(wù):
^{pr2}$
但是,并不是每次代碼運行時所有線程都加入。有時只有2個連接,有時沒有線程連接。我不認為我在阻止線程完成。有什么理由使join()不能在這里工作?在
總結(jié)
以上是生活随笔為你收集整理的为什么不能用python_为什么我不能用python加入这个线程?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ascii码01100001_ASCII
- 下一篇: xdpyinfo命令找不到_无法使用命令