#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