Pertanyaan Pemrosesan multiprosesing Python


Saya berjuang untuk mencari tahu cara membuat profil skrip python multiproses ganda yang sederhana

import multiprocessing
import cProfile
import time
def worker(num):
    time.sleep(3)
    print 'Worker:', num

if __name__ == '__main__':
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i,))
        cProfile.run('p.start()', 'prof%d.prof' %i)

Saya memulai 5 proses dan oleh karena itu cProfile menghasilkan 5 file berbeda. Di dalam masing-masing saya ingin melihat bahwa metode saya 'pekerja' membutuhkan waktu sekitar 3 detik untuk dijalankan tetapi saya hanya melihat apa yang terjadi di dalam 'metode awal'.

Saya akan sangat menghargai jika seseorang dapat menjelaskan ini kepada saya.

Pembaruan: Contoh pekerjaan berdasarkan jawaban yang diterima:

import multiprocessing
import cProfile
import time
def test(num):
    time.sleep(3)
    print 'Worker:', num

def worker(num):
    cProfile.runctx('test(num)', globals(), locals(), 'prof%d.prof' %num)


if __name__ == '__main__':
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i,))
        p.start()

32
2018-06-14 21:33


asal


Jawaban:


Anda sedang mem-profil proses startup, itulah mengapa Anda hanya melihat apa yang terjadi di dalamnya p.start() seperti yang Anda katakan — dan p.start() kembali setelah subproses dimulai. Anda perlu profil di dalam worker metode, yang akan dipanggil dalam subproses.


17
2018-06-14 21:36