首页 > 解决方案 > 更多主题当代

问题描述

我正在尝试运行具有多个线程的代码,用户可以决定他想要运行多少个线程。我尝试使用 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

现在我需要弄清楚,我怎样才能做到,它们同时运行,而不是一个接一个。谢谢

标签: pythonmultithreading

解决方案


您的代码并行运行(注意:虽然只是在一个内核上;由于全局解释器锁定,这是 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

推荐阅读