Я работаю над python 3, и мой класс такой, как показано ниже.
class MyClass():
def values(self):
***values***
i =0
def check_values(self):
for i in ValueList[i:i+1]:
self.server_connect()
new_value = self.update.values(i)
def run(self):
self.check_values()
if __name__ == "__main__"
format1 = "%(asctime)s: %(message)s"
logging.basicConfig(format=format1, level=logging.INFO,
datefmt="%H:%M:%S")
for i in range(4):
thread = threading.Thread(target=MyClass().run())
threads.append(thread)
i += 1
print("the %s thread is running", thread)
thread.start()
Нет созданных потоков, но код работает. Я не могу понять, что я делаю здесь неправильно.
РЕДАКТИРОВАТЬ
Во-первых, я хотел бы поблагодарить вас за ответ и время дано за ответ. Я должен обновить код и наследовать другой класс в соответствии с новым обновлением от команды, как показано ниже.
class MyClass(MainServer):
Теперь у сервера есть собственная функция запуска, как показано ниже.
class MainServer(object):
***constructor***
***other functions ***
def run(self):
self.add_arguments()
self.parse_arguments()
self.check_values()
Теперь, без run () мой код не работает должным образом. в то время как включая run (), как показано ниже.
*** main ***
update_perform = MyClass()
for i range(4):
thread = threading.Thread(target=Myclass().run()) <-- code starts from here
threads.append(thread)
i += 1
print("the %s thread is running", thread)
thread.start() <-- not reaching till here
Насколько я знаю, мне потребуется thread.start (), чтобы начать работу с потоками. Итак, я попробовал ниже вариант
class MyClass(MainServer):
***code as above***
def check_values(self):
self.server_authenticate()
update_value = self.update.values()
def run(self):
self.server_connect()
i = 0
threads = list()
for i in ValueList[i:i+1]:
print("Updating the value = ", i)
thread = threading.Thread(target=check_values(), args=[i])
thread.start()
i += 1
print("Currently running thread", thread)
threads.append(thread)
for thread in threads:
thread.join()
Здесь поток выполняется с начала и в печати, я вижу, как показано ниже
for threading :-
Currently running threads = <Thread(Thread-8, stopped 14852)>
Но для значения, которое я вижу, только один в процессе как показано ниже
for value :-
Updating the value = 10 <- first value
Итак, теперь потоки могут создаваться, но значения не выполняются параллельно.
Что я не могу выяснить.