Um Threading-Konzept besser kennen zu lernen, habe ich versucht, Threads in einem einfachen Programm zu verwenden. Ich möchte eine Funktion 3 Mal aufrufen, die zufällige Auswahl macht.
Wie bekomme ich verschiedene Antworten von verschiedenen Threads?
def func(arg):
lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
num = random.choice(lst)
arg.append(num)
return arg
def search(arg):
a = func(arg)
a = func(a)
threads_list = []
que = queue.Queue()
for i in range(3):
t = threading.Thread(target=lambda q, arg1: q.put(func(arg1)), args=(que, a))
t.start()
threads_list.append(t)
for t in threads_list:
t.join()
while not que.empty():
result = que.get()
print (result)
if __name__ == '__main__':
lst = []
search(lst)
Wie Sie im dritten Teil sehen können, habe ich Threads aber ich erwartete verschiedene Listen (unterschiedlich für den dritten Teil) zu erhalten. aber alle Threads geben die gleiche Antwort zurück.
Kann mir jemand helfen, verschiedene Listen aus verschiedenen Themen zu bekommen?
Ich glaube, ich habe das Konzept der Multiprocessing und Multithreading missverstanden.
Können Sie Ihre Gedanken in die Praxis umsetzen und den Code korrigieren? –