Python: проблема с одновременным запуском дополнительных функций

#python #python-3.x #multithreading #function #concurrency

#python #python-3.x #многопоточность #функция #параллелизм

Вопрос:

Я работаю над сценарием инкрементной игры, похожим на Cookie-кликер, на Mu. Где каждый раз, когда вы вводите ‘.’ это увеличивает переменную с именем ‘dots’ на единицу. Однако у меня возникают проблемы с одновременным запуском этой функции с функцией, которая увеличивает переменную ‘dots’ на единицу каждую секунду.

 import threading
import time
dots = 0

def func1():
    global dots
    while True:
        user_input = input() 
        if user_input == '.':
            dots = dots   1
            print(dots)

def func2():
    global dots
    while True:
        time.sleep(1)
        dots = dots   1
        print(dots)

func1_thread = threading.Thread(target=func1)
func2_thread = threading.Thread(target=func2)

if __name__ == '__main__':
    func1_thread.start()
    func2_thread.start()
 

Этот код приводит к синтаксической ошибке при каждом чередующемся ‘.’, введенном пользователем:

Файл «», строка 1
.
^
Ошибка синтаксиса: недопустимый синтаксис

Заранее благодарю всех, кто мне помогает.

(Исправлена проблема, версия python, которую я запускал, была 3.6, поэтому я переключился на pycharm версии 3.9, и он отлично работает.)

Комментарии:

1. Как вы это выполняете? Это из интерактивной оболочки Python? Кажется вероятным, что ваша программа принимает одно ‘.’, затем оболочка получает следующее и говорит, что это синтаксическая ошибка.

2. когда я запускаю его в консоли / терминале Linux, он работает без проблем.

3. Глен, я запускаю это в скрипте.

4. Вы уверены, что это Python 3? Похоже, ваш вызов input оценивает ввод пользователя, который он выполняет в Python 2.

5. Дэвис, я проверил Windows PowerShell, и он говорит, что он работает в версии 3.9.0