Python 如何在队列为元组列表的情况下对任务执行多线程处理
我有两个代码,希望有更快的处理 第一代码 (在我最近的线程中,有人指出我的线程代码是错误的) 他表示,无论TotalThread的值是多少,它都不会处理得更快Python 如何在队列为元组列表的情况下对任务执行多线程处理,python,multithreading,queue,Python,Multithreading,Queue,我有两个代码,希望有更快的处理 第一代码 (在我最近的线程中,有人指出我的线程代码是错误的) 他表示,无论TotalThread的值是多少,它都不会处理得更快 class ThreadingPower(threading.Thread): def __init__(self, queue): threading.Thread.__init__(self) self.queue= queue def run(self): while
class ThreadingPower(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self)
self.queue= queue
def run(self):
while True:
Manager = self.queue.get()
for Numbers,HWID in Manager:
r = requests.post(URL, data=payload) # License Checker Required Numbers ( Buyer Code ) And HWID ( License Code )
data = (r.text)
if ('Verified' in data):
with open(resultsFile,'a+') as results:
results.write("The Number : "+str(Numbers)+" Is Verified By The "+str(HWID))
results.close()
print str(HWID)+" Is Server Verified"
else:
print str(HWID)+" Is Not Server Verified"
self.queue.task_done()
if __name__ == "__main__":
for i in range(TotalThread):
t = ThreadingPower(queue)
t.setDaemon(False)
t.start()
queue.put(credentials)
queue.join()
凭据是tuple
[
['UniqueHWID', 'BuyerCode'],
['UniqueHWID', 'BuyerCode'],
['UniqueHWID', 'BuyerCode']
]
第二个代码
测试表是这样的
[
['StudentName', 'Test1', 'Test2', 'Test3'],
['StudentName', 'Test1', 'Test2', 'Test3'],
['StudentName', 'Test1', 'Test2', 'Test3']
]
我还在学习一些关于Python的知识,很抱歉问了这么多问题
我没有测试第二个代码,但由于线程部分是第一个代码的基础,我认为它也有相同的问题退一步,先尝试不使用
线程
def run(p):
Performance = p
Name, ScoreA, ScoreB, ScoreC = Performance
TScore = int((ScoreA + ScoreB + ScoreC) / 3)
print('{} Has Scored:{}'.format(Name, TScore))
if TScore >= PassScore:
print(Name + " Has Passed")
else:
print(Name + " Has Failed")
if __name__ == "__main__":
PassScore = 10
# Name ScoreA, ScoreB, ScoreC
TestSheet = [['StudentName1', 1, 2, 3],
['StudentName2', 4, 5, 6],
['StudentName3', 7, 8, 9]]
for p in TestSheet:
run(p)
如果结果满足您的需要,请添加threading
class ThreadingPower(threading.Thread):
...
def run(self):
Performance = self.queue.get()
...
if __name__ == "__main__":
...
for p in TestSheet:
queue.put(p)
...
问题:他表示,无论TotalThread的值如何,它都不会处理得更快 你所做的是
队列中等待的所有线程。get()
将测试表中的3个作业依次放置
for job in TestSheet:
queue.put(job)
这是无效的Python,您必须将其更改为新的队列数据:
for in Name,ScoreA,ScoreB,ScoreC in Performance:
第二,您将一个str
列表放入队列
,并想做一些数学运算,这也将失败 我不知道测试表中的作业是如何工作的?对于Name,ScoreA,ScoreB,ScoreC,在测试表中:queue.put(Name)queue.put(ScoreA)queue.put(ScoreA)queue.put(ScoreC),我不明白这是如何工作的,然后我会self.queue.get()4次,然后在性能上执行Name,ScoreA,ScoreB,ScoreC:#在这里做点什么?@David:No,Name,分数…
是一个作业的值。一个作业是值列表,在您的示例中是“['StudentName'、'Test1'、'Test2'、'Test3']。您的
TestSheet`包含3个作业。阅读此文并按照示例进行操作
for in Name,ScoreA,ScoreB,ScoreC in Performance: