最后一个线程没有在Python 2.7中执行

时间:2017-11-18 14:17:22

标签: python multithreading

我有一个标题为tables的函数,它执行一些耗时的任务。我需要在一个单独的线程中调用此函数。但是,对函数move的调用必须是顺序的。例如,只有在前一个线程完成时才应创建下一个线程。

以下是示例代码:

move

以上代码打印以下输出:

import sys
import time
from PyQt4.QtGui import *
from threading import Thread
from thread import start_new_thread

class Test():
    def __init__(self):
        self.length = 10

    def move(self, point):
        print '\nMove ',
        points = []
        i = 1
        while True:
            value = i * point
            points.append(value)
            if len(points) > self.length:
                break
            time.sleep(0.1)#100 ms
            print value,
            i += 1

test = Test()

def move_test():
    points = [3, 5, 7]
    def move_test_thread(points):
        for point in points:
            thread = Thread(target=test.move, args=(point,))
            thread.start()
            thread.join()
    start_new_thread(move_test_thread, (points,))

a = QApplication(sys.argv)
w = QWidget()
w.resize(320, 240)
w.setWindowTitle("Hello World!")

move_button = QPushButton('move', w)
move_button.clicked.connect(move_test)
move_button.resize(move_button.sizeHint())
move_button.move(40, 80)

w.show()
sys.exit(a.exec_())

不幸的是,它没有为最后一点执行线程,即7.为什么会出现这种奇怪的行为?我错过了一些明显的东西吗?

0 个答案:

没有答案