Python双循环没有线程

时间:2013-06-24 16:36:19

标签: python multithreading for-loop grid multitasking

基本上,我想制作一个有学校科目的网格和我从中得到的所有测试结果,我想为每个科目显示大约10个结果。

像这样:

...
--------------------------------------------------------------------
English| 7.4 | 6.4 | 9.5 | 4.5 | 8.9 | 3.9 | 8.0 | 6.5 | 9.9 | 4.9 |
--------------------------------------------------------------------
Dutch  | Results
...

我基本上做了两个FOR循环,一个从列表中读取每个学校主题,一个从列表中读取每个结果。 但是,我希望它们完成而不会在下一个循环中“卡住”。 我该怎么做呢?我是否对两个循环进行线程化并延迟时间,以便每隔x秒读取一次值? (可能不是这个,这很慢)

代码:

...
for item in store: #Loop that reads the subjects
        with open("matrixcontent.dat", "r") as matrixcontent_open:
            lines = matrixcontent_open.readlines() #Lines are test results
        for line in lines:
            print(item + "|" + line + "\n" + ("-------------" * 7))
            #I want this last line to print the subject and than all the results

编辑:

使用下面的解决方案(稍微),它将打印所有测试结果,但它将打印错误。如何设置在一个单独的列/行中打印所有测试结果?我希望所有这些数字都在NTL(荷兰语)行中。

NTL | 7.2


ETL | 8.4


WIB | 6.7


WID | 5.3


ICT | 4.8


NAS | 9.4


SCK | 10.0

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您的matrixcontent.dat包含每个主题的所有分数,每行一组,并且行的顺序对应于store列表变量中主题的顺序。

在这种情况下,您只需要一个循环,无论是matrixcontent.dat中的行还是store变量上的行。

这样的事情应该有用......

with open("matrixcontent.dat", "r") as matrixcontent_open:
    for item in store:
        line = next(matrixcontent_open)
        print(item + "|" + line + "\n" + ("-------------" * 7))