python многопоточность глобальная переменная проблема - PullRequest
0 голосов
/ 25 марта 2020

я пытаюсь найти первые 2000 простых чисел
у меня уже есть 1000, но мне нужно найти все остальные с параллельным вычислением

я пытаюсь создать 4 потока, каждый из которых проверить число с 250 числами простых чисел из моего массива из 1000 простых чисел, и если один из потоков получит не простое число, он должен сказать всем потокам остановиться, и если число пройдет все потоки, проверяется, что число добавится к простому массив чисел

на данный момент по какой-то причине функция l oop в моей функции check () не работает

спасибо за помощь

numOfThreads=4
arr =[]
number=1
flag=0

def initArr(arr,number):
    while len(arr) != 1000:
        number=number+1
        count=0
        for i in range(2, (number // 2 + 1)):
            if number % i == 0:
                count = count + 1
                break
        if count == 0 and number != 1:
            arr.append(number)

def check(start,end,number):
    global flag
    global arr
    for num in range (start , end):
        if number % arr[num] == 0:
            flag=-1

        if flag == -1:
             continue

initArr(arr,number)

flagstart = 0
threads = list()
count=arr[len(arr)-1]
jobs = []
while len(arr) != 2000:
    for index in range(0,numOfThreads):
        start=int((index-1) * len(arr) / numOfThreads)
        end=int((index-1) * len(arr) / numOfThreads)
        if index == 0:
            start=0
        if index == numOfThreads:
            end=len(arr)
        thread = threading.Thread(target=check(start,end,count))
        jobs.append(thread)
        if flagstart == 0:
            flagstart = -1
            for j in jobs:
                j.start()
    if flag == 0:
        arr.append(count)
    elif flag == -1 :
        flag=0
    count = count+1
  '''








...