Apakah kaedah untuk membuat baris gilir dalam kolam proses python?

PHPz
Lepaskan: 2024-03-01 17:04:02
ke hadapan
1139 orang telah melayarinya

Apakah kaedah untuk membuat baris gilir dalam kolam proses python?

Dalam python, anda boleh menggunakan modul multiprocessing untuk mencipta kumpulan proses dan baris gilir.

Berikut ialah contoh kod untuk menggunakan multiprocessing.Poolmultiprocessing.Queue untuk membuat kumpulan proses dan baris gilir:

import multiprocessing

# 创建进程池
pool = multiprocessing.Pool(processes=4)

# 创建队列
queue = multiprocessing.Queue()

# 将任务添加到队列中
for i in range(10):
queue.put(i)

# 定义任务函数
def process_task(item):
# 处理任务
result = item * 2
return result

# 使用进程池执行任务
results = []
while not queue.empty():
item = queue.get()
result = pool.apply_async(process_task, args=(item,))
results.append(result)

# 等待所有任务完成
pool.close()
pool.join()

# 获取任务结果
for result in results:
print(result.get())
Salin selepas log masuk

Dalam kod contoh di atas, tambah dahulu pada baris gilir menggunakan kaedah multiprocessing.Pool创建了一个拥有4个进程的进程池,然后使用multiprocessing.Queue创建了一个队列。任务通过queue.put().

Seterusnya, kaedah fungsi tugas process_task,该函数用于处理任务。在任务处理过程中,可以使用queue.get() ditakrifkan untuk mengeluarkan tugasan daripada baris gilir.

Akhir sekali, gunakan pool.apply_async()方法将任务函数process_task提交给进程池执行,并将结果保存在resultssenarai. Proses dalam kumpulan proses akan mengalih keluar tugas secara automatik daripada baris gilir dan melaksanakannya.

Akhir sekali, gunakan kaedah pool.close()方法关闭进程池,并使用pool.join() untuk menunggu semua tugasan selesai.

Perhatikan bahawa multiprocessing.Queue ialah proses multiprocessing.Queue是进程安全的队列,可以在多个进程之间共享数据。而使用普通的queue.Queuesafe

queue yang boleh berkongsi data antara berbilang proses. Menggunakan queue.Queue biasa untuk berkongsi data antara berbilang proses akan menyebabkan pengecualian. 🎜

Atas ialah kandungan terperinci Apakah kaedah untuk membuat baris gilir dalam kolam proses python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:lsjlt.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!