python - 更多主题当代
问题描述
我正在尝试运行具有多个线程的代码,用户可以决定他想要运行多少个线程。我尝试使用 Python 3.7 中的线程模块
我的代码如下所示,但我的问题是,它不是一起运行所有线程,而是一个接一个地运行......
import threading
x=int(input("Enter number of threads: "))
def main():
print("My main function")
print("Does some stuff...")
while x > 0:
print("Starting Threads.")
x=x-1 #At every time the while loops gets passed, x gets decremented, so once it hits 0 it stops
t1=threading.Thread(target=main) #for every time the loop passes, a new thread gets created
t1.start() #and the thread starts here
现在我需要弄清楚,我怎样才能做到,它们同时运行,而不是一个接一个。谢谢
解决方案
您的代码并行运行(注意:虽然只是在一个内核上;由于全局解释器锁定,这是 python 的限制)。
让它更明显地改变你的主要功能;它现在的方式完成得太快了。我建议:
from time import sleep
from random import random
def main():
print("main starting")
sleep(random())
print("main done")
这将输出类似
Enter number of threads: 4
Starting Threads.
main starting
Starting Threads.
main starting
Starting Threads.
main starting
Starting Threads.
main starting
main done
main done
main done
main done
推荐阅读
- java - 如何向 Apache Flink 表添加新行
- android - Unity 3d 构建后更改纹理
- c++ - 将此成员称为模板参数
- c++ - 谷歌测试:带有模板的模板模板的笛卡尔积类型列表
- c++ - 通过指针恢复对数组的引用。UB与否?
- typescript - Firebase 和 React 对象可能为“空”。TS2531
- android - 无法膨胀 MaterialCardView
- javascript - 如何阻止 alertController 第二次打开
- android - 通过 Kotlin 中的 Switch 按钮设置元素可见性
- python - 在 Python 中,我将如何比较一个字典中的两个值在另一个字典中具有相同的值?