如何在自定义线程中分配目标?

时间:2016-07-29 18:38:18

标签: python python-3.x

from threading import *
from random import *

class Ant(Thread):
    def __init__(self, x, y):
        Thread.__init__(self)
        self.x = x
        self.y = y

    def move(self, x, y):
        self.x = x
        self.y = y

class Ant_farm():
    def __init__(self, x, y):
        self.x = x
        self. y = y
        self.matrix = matrix(x, y)
        self.condition = Condition()

    def move(self, ant):
        with self.condition:
            x1, y1 = next_post(ant)
            while self.matrix[x1][y1]:
                self.condition.wait()
            self.matrix[ant.x][ant.y] = False
            ant.move(x1, y1)
            self.matrix[ant.x][ant.y] = True
            self.condition.notify_all()

    def next_pos(self, ant):
        while True:
            choice = {0: (ant.x, ant.y - 1),
                      1: (ant.x + 1, ant.y),
                      2: (ant.x, ant.y + 1),
                      3: (ant.x - 1, ant.y)}
            x1, y1 = choice[randrange(0, 4)]
            try:
                self.matrix[x1][y1]
            except IndexError:
                pass
            else:
                return x1, y1

    def __str__(self):
        res = '\n'
        for i in range(self.x):
            aux = ''
            for j in range(self.y):
                aux += str(self.matrix[i][j]) + ' '
            aux += '\n'
            res += aux
        return res

def matrix(x, y):
    return [[False for j in range(y)] for i in range(x)]

if __name__ == '__main__':
    ant_farm = Ant_farm(7, 7)
    for i in range(4):
        # t = Ant(target = ant_farm.move)
        pass

我想在move个线程中运行Ant函数。我试着这样做:

t = Ant(target = ant_farm.move)

但是口译员说:

  

TypeError: init ()得到意外的关键字参数'target'

我理解错误,但我不知道怎么做我说的。

0 个答案:

没有答案