我正在创建一个python代码,该代码具有应按用户要求使用线程的次数运行的功能。例如:
import time
T = input("Enter the number of times the function should be executed")
L = [1,2,3,4]
def sum(Num):
for n in Num:
time.sleep(0.2)
print("square:",n*n)
基于用户的T值,我想动态创建T个线程,并在单独的线程中执行sum函数。
如果用户输入为4,那么我需要动态创建4个线程并使用4个不同的线程执行相同的功能。 请帮我创建4个多线程。谢谢!
答案 0 :(得分:0)
这取决于您的需要,您有几种方法可以做。这是两个适合您情况的示例
如果要创建N
线程并等待它们结束。您应该使用threading
模块并导入Thread
。
from threading import Thread
# Start all threads.
threads = []
for n in range(T):
t = Thread(target=sum, args=(L,))
t.start()
threads.append(t)
# Wait all threads to finish.
for t in threads:
t.join()
否则,如果您不想等待。我强烈建议您使用thread
模块(自Python3起改名为_thread
)。
from _thread import start_new_thread
# Start all threads and ignore exit.
for n in range(T):
start_new_thread(sum, (L,))
(args,)
是一个元组。这就是L
处于括号中的原因。
答案 1 :(得分:0)
S UПΣYΛ答案很好地解释了如何使用多线程,但没有考虑用户输入,根据您的问题,用户输入定义了线程数。基于此,您可以尝试:
import threading, time
def _sum(n):
time.sleep(0.2)
print(f"square: {n*n}")
while 1:
t = input("Enter the number of times the function should be executed:\n").strip()
try:
max_threads = int(t)
for n in range(0, max_threads):
threading.Thread(target=_sum, args=[n]).start()
except:
pass
print("Please type only digits (0-9)")
continue
print(f"Started {max_threads} threads.")
# wait threads to finish
while threading.active_count() > 1:
time.sleep(0.5)
t = input("Create another batch (y/n)?\n").lower().strip() #
if t != "y":
print("Exiting.")
break
注意:
sum()
,请使用
_sum()
或类似名称; Def
与def
不同,For
也是如此/ for
; '
或双引号将字符串括起来
"
,不 ’
;