Python Threading с параллелизмом - PullRequest
       34

Python Threading с параллелизмом

1 голос
/ 27 ноября 2011

Я написал следующий код, пытаясь научиться многопоточности в python.

    import threading
    import time

    def printWorker(x,y):
        t = time.time()
        while time.time() - t < 10:
            print "Name:%s  Time:%s" %(y,str(time.time() - t))
            time.sleep(x)

    t1 = threading.Thread(target = printWorker(2,'Thread-1'))
    t2 = threading.Thread(target = printWorker(3,'Thread-2'))

    t1.start()
    t2.start()

Я пытаюсь получить вывод, при котором одновременно запускаются как Thread-1, так и Thread-2. IE Print

Нить-1, Нить-2, Материал Нити-1, Нить-2, вместо

Нить-1, Материал Нити-1, Материал Нити-1, Материал Нити-1, Нить-2, Нить-2, Нить-2, Нить-2 Материал

Вместо Thread-2 запускается только после Thread-1. Я проверил онлайн примеры, но я не понимаю, что я делаю неправильно механически.

1 Ответ

4 голосов
/ 27 ноября 2011

Для передачи аргументов вам нужно сделать следующее:

t1 = threading.Thread(target=printWorker, args=(2, 'Thread-1'))
t2 = threading.Thread(target=printWorker, args=(3, 'Thread-2'))

Ваш код вызывает printWorker в главном потоке и запускает два потока с target = None (возвращаемое значение printWorker).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...