Я пытаюсь придумать способ, чтобы потоки работали над одной и той же целью, не мешая. В этом случае я использую 4 потока, чтобы добавить каждое число от 0 до 90 000. Этот код работает, но он заканчивается почти сразу (Runtime: 0.00399994850159 сек) и только выходы 0. Изначально я хотел сделать это с глобальной переменной, но меня беспокоило потоки, мешающие друг другу (т. Е. Небольшая вероятность того, что два потока удваиваются подсчитать или пропустить номер из-за странного времени чтения/записи). Поэтому вместо этого я заранее распределял рабочую нагрузку. Если есть лучший способ сделать это, пожалуйста, поделитесь. Это мой простой способ получить опыт в многопоточности. СпасибоМогут ли потоки Python работать над одним и тем же процессом?
import threading
import time
start_time = time.time()
tot1 = 0
tot2 = 0
tot3 = 0
tot4 = 0
def Func(x,y,tot):
tot = 0
i = y-x
while z in range(0,i):
tot = tot + i + z
# class Tester(threading.Thread):
# def run(self):
# print(n)
w = threading.Thread(target=Func, args=(0,22499,tot1))
x = threading.Thread(target=Func, args=(22500,44999,tot2))
y = threading.Thread(target=Func, args=(45000,67499,tot3))
z = threading.Thread(target=Func, args=(67500,89999,tot4))
w.start()
x.start()
y.start()
z.start()
w.join()
x.join()
y.join()
z.join()
# while (w.isAlive() == False | x.isAlive() == False | y.isAlive() == False | z.isAlive() == False): {}
total = tot1 + tot2 + tot3 + tot4
print total
print("--- %s seconds ---" % (time.time() - start_time))