Python 多线程未运行任务
所以我整天都在摆弄这个多线程,但似乎可以让它正常工作。它也在Python3中 该程序试图生成5个单词的列表1000次,并使用多线程来提高速度 我把代码改成了很多不同的方法,我一直在网上搜索,但没有结果 用我目前拥有的,它将运行没有任何问题,但不会打印任何文字 有没有可能有人看一下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).
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
中的缩进。您的代码的当前格式不正确。@FatihAkicigen
正在读取文件并在同一功能中打印。正如你们所知道的,多线程并不会自动让事情变得更快。当你的程序被某个东西阻塞时,线程是好的,比如HTTP调用或I/O。如果你有很多工作要分发,你想要的是多处理,而不是多线程。每个衍生线程都在执行文件I/O;那个磁盘只能读这么快@user2896976澄清一下,网络I/O(服务器调用等)适合线程化,但文件I/O(到磁盘,甚至是网络驱动器[fast like I/O])可能会很麻烦。