Мне нужно синхронизировать мой поток, чтобы выполнять их одновременно, все это работает без барьера, но потоки выполняются на avg.2 в секунду, и мне нужно, чтобы по крайней мере 50-100 потоков выполнялось одновременно.
Когда я использую в своем коде Barrier, моя программа застревает как Dead Lock.
def Spin_Clients(self):
def get_clients():
self.connect_to_database1()
self.get_message_from_client1()
client_list = []
barrier = Barrier(10)
def send_messages():
global MessageNumber
global machineName
global staffName
timestamp = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
logging.info("Thread {} working on something".format(threading.current_thread()))
logging.info("Thread {} working on something1".format(threading.current_thread()))
machineName = final_result[MessageNumber][0]
logging.info("Thread {} working on something2".format(threading.current_thread()))
staffName = staff_results[MessageNumber][0]
logging.info("Thread {} working on something3".format(threading.current_thread()))
MessageNumber += 1
logging.info("Thread {} working on something4".format(threading.current_thread()))
r = requests.post(
"http://sampleurl"+ staffName + "&locationId=" + machineName)
logging.info("Thread {} working on something5".format(threading.current_thread()))
barrier.wait(timeout=5)
logging.info("Response Code Should be 202: " + str(r.status_code) + " Time: " + timestamp)
logging.info("Thread {} working on something6".format(threading.current_thread()))
for i in range(10):
t = Thread(target=send_messages(), args=(i,))
t.start()
logging.info("Message Sent to: " + staffName + " " + machineName)
for thread in client_list:
thread.join()
Iнужно отправить 50-100 запросов в секунду, как этого добиться, используя синхронизацию потока Python?
Я не получаю никакой ошибки, мне нужно убить сеанс, чтобы закрыть мою проблему при его запуске.
Согласно Комментарию после добавления таймаута и регистрации каждой строки, это то, что я получаю в результате
INFO Thread <_MainThread(MainThread, started 68480)> working on something
09:19:53.929 INFO Thread <_MainThread(MainThread, started 68480)> working on something1
09:19:53.929 INFO Thread <_MainThread(MainThread, started 68480)> working on something2
09:19:53.929 INFO Thread <_MainThread(MainThread, started 68480)> working on something3
09:19:53.929 INFO Thread <_MainThread(MainThread, started 68480)> working on something4
09:19:53.963 INFO Thread <_MainThread(MainThread, started 68480)> working on something5
09:19:58.964 FAIL BrokenBarrierError
ОБНОВЛЕНИЕ 2:
Теперь я просто пытаюсь запустить простую нить печати, ноЯ все еще получаю BrokenBarrierError
def Spin_Clients(self, NumMessages):
def get_clients():
self.connect_to_database1()
self.get_message_from_client1()
client_list = []
barrier = Barrier(10)
def send_messages():
logging.info("Thread {} Working on something".format(threading.current_thread()))
logging.info("Thread {} I have Reached the barrier".format(threading.current_thread()))
barrier.wait(timeout=10)
for i in range(10):
client_list.append(Thread(target=send_messages(), args=(i,)))
client_list[].start()
for thread in client_list:
thread.join()
print("All threads have finished")