Невозможно запустить несколько процессов 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()
Другие вопросы по тегам