Невозможно запустить несколько процессов Python одновременно
Я пытаюсь запустить многопроцессорную программу, но по какой-то причине процессы не запускаются одновременно, они ожидают завершения другой. Ниже приведен фрагмент кода и некоторые выводы. Могли бы вы, пожалуйста, посоветовать? Я использую Python 2.7 на Windows 10, но я тестировал на Python 3.5 Ubuntu, а также с теми же результатами.
Несмотря на то, что оба процесса выполняют одну и ту же функцию, мне не важно, какой из них завершается первым, потому что их результаты не связаны, я просто хочу лучше использовать процессор
import multiprocessing
import time
import os
def function(x):
seq1 = x
index = 1
match = False
t = time.time()
while match == False:
.........................
if k==6 :
match = True
index = index + 1
def Main():
x1=raw_input("Please enter first sequence: ")
seq1=[]
seq1 = x1.split(",")
p1 = multiprocessing.Process(target=function(seq1),)
p1.start()
p2 = multiprocessing.Process(target=function(seq1),)
p2.start()
Main()
Вывод (мне нужно дождаться окончания P1, а затем запуска P2): P1 запустил идентификатор процесса: 4520 Найдено совпадение: 30401191 попыток ('сделано P1 in: ', 1072.0950000286102) P2 запустил идентификатор процесса: 4520 Найдено совпадение в: 8665524 попытки ('сделано P2 в: ', 298.375)
1 ответ
Вы неправильно используете multiprocessing.Process
интерфейс класса. Вам нужно передать функцию в качестве цели и аргументы в списке.
Ваша логика вызывает функцию и передает ее результаты в качестве цели процессу.
p1 = multiprocessing.Process(target=function, args=(seq1,))
p1.start()
p2 = multiprocessing.Process(target=function, args=(seq1,))
p2.start()