Python 多线程未运行任务

Python 多线程未运行任务,python,python-multithreading,Python,Python Multithreading,所以我整天都在摆弄这个多线程,但似乎可以让它正常工作。它也在Python3中 该程序试图生成5个单词的列表1000次,并使用多线程来提高速度 我把代码改成了很多不同的方法,我一直在网上搜索,但没有结果 用我目前拥有的,它将运行没有任何问题,但不会打印任何文字 有没有可能有人看一下 import random from threading import Thread word_file = "words.txt" def gen(): Words = open(word_file).

所以我整天都在摆弄这个多线程,但似乎可以让它正常工作。它也在Python3中

该程序试图生成5个单词的列表1000次,并使用多线程来提高速度

我把代码改成了很多不同的方法,我一直在网上搜索,但没有结果

用我目前拥有的,它将运行没有任何问题,但不会打印任何文字

有没有可能有人看一下

import random
from threading import Thread

word_file = "words.txt"


def gen():
    Words = open(word_file).read().splitlines() #retreiving and sorting word file
    seed = random.randrange(0,2048) #amount of words to choose from in list

    for x in range(0, 1000):
        print(random.choices(Words, k=5)) #print the words

def main():
    t1 = Thread(target=gen)
    t2 = Thread(target=gen)
    t3 = Thread(target=gen)
    t4 = Thread(target=gen)
    t1.start()
    t2.start()
    t3.start()
    t4.start()

print("completed")

非常简单:您的代码没有调用任何函数,只是构建它们并让它们单独运行

只需将
main()
添加到
print(“completed”)
之前,代码就会调用该函数

注意1:为什么要在循环中一遍又一遍地读取文本文件,为什么要手动打开它?通过以下按钮自动关闭:

with open(word_file, "r") as f:
    Words = f.read().splitlines()
gen()之前编码

注2:
seed
在做什么?您定义了它,但没有在任何地方使用它


注3:在发布问题之前,请检查缩进。

请更正
gen
main
中的缩进。您的代码的当前格式不正确。@FatihAkici
gen
正在读取文件并在同一功能中打印。正如你们所知道的,多线程并不会自动让事情变得更快。当你的程序被某个东西阻塞时,线程是好的,比如HTTP调用或I/O。如果你有很多工作要分发,你想要的是多处理,而不是多线程。每个衍生线程都在执行文件I/O;那个磁盘只能读这么快@user2896976澄清一下,网络I/O(服务器调用等)适合线程化,但文件I/O(到磁盘,甚至是网络驱动器[fast like I/O])可能会很麻烦。